[]在native下 Laya.Browser.window.Blob不存在

所以,我无论怎么做,都不能把下载的图片渲染出来
已邀请:

daibao520

赞同来自:

donloadImageTest: function (ss) {
var xhr = new Laya.HttpRequest();
xhr.once(Laya.Event.COMPLETE, this, completeHandler);
xhr.once(Laya.Event.ERROR, this, errorHandler);
xhr.send("http://192.168.10.108:35553/re ... ot%3B, "", "get", "arraybuffer");
function completeHandler(data) {
//加载完成返回的data是arraybuffer;
//.......这里处理我们加密的图片数据,假设我们的图片加密数据是在图片的前面写入了四个字节的数据
//.......解密逻辑开始处理数据。
// var byte = new Laya.Byte(data);//Byte数组接收arraybuffer
// byte.writeArrayBuffer(data, 0);//从第四个字节开始读取数据
// var blob = new Laya.Browser.window.Blob([data], { type: "image/png" });
// var url = Laya.Browser.window.URL.createObjectURL(blob);//创建一个url对象;
////我们先用第一种方式显示图片到舞台;
// var sp = new Laya.Sprite();

// var png = window.conch.convertBitmapToPng(data, 640, 1136);
var cc = new laya.resource.Texture(data);
ss.source = cc;
// Laya.stage.addChild(sp);//添加到舞台
}
function errorHandler(url) {
gbx.log("2222222222222222")
}
}
 
ss 是一个image,
data 已经下载到了
在native下,怎么画出来

daibao520

赞同来自:

另外,如果我的数据类型是base64字符串,这个又要怎么画出来

Monica - 知识达人

赞同来自:

如果图片的数据是bitmap的话可以用以下代码:
if (Render.isConchApp) {
if (_image)
_image.conchDestroy();
_image = Browser.document.createElement("image");
_image.putImageData(bitmap,_w,_h);
}
其他的数据无法显示

 

daibao520

赞同来自:

我是在弄一个客服系统,玩家可以把IOS相册里的图片发给客服,同时客户端显示出来。
从相册里获取的图片格式不是bitmap,是png的图片经过base64加密的,你们上面给的做法好像行不通。
我又想了一个新的方法,把这个base64数据解密成png,用window.fs_writeFileSync(conch.getCachePath()+"/test.png", png);保存到本地,然后再用laya.net.Loader加载,我刚才试了一下,加载报错,我不知道我这种方法可不可行。

test: function (base64Str, sprite) {
var imageData = base64Util.decode(base64Str);
var address = conch.getCachePath() + "/test.png";
window.fs_writeFileSync(address, imageData);
Laya.loader.load(address, Laya.Handler.create(this, function (isOK) {
if (isOK) {
sprite.skin = address;
} else {
}
}, null, true), Laya.Handler.create(this, function (percent) {
}, null, false));
}
解密应该没错,我试了

要回复问题请先

商务合作
商务合作