被几个概念绕晕了,RenderTexture,Texture2D,Image,Sprite,SpriteFrame…
怎么将远程加载的Texture2D另存为一个文件?
Texture2D怎么转Image?
Image在creator里有吗?
载入到内存里的图片就是Texture2D
使用RenderTexture也不行,只支持RGBA,不支持JPG
目前只能使用 RenderTexture 保存内容,贴图本身无法被存储为文件,也没有转换为原生 Image 的公有方法。
RenderTexture 保存的像素格式应该跟你一开始设置的像素格式一致
2017-04-26T01:50:16.285Z - normal: Simulator: RGBA is not supported for JPG format.
2017-04-26T01:50:16.286Z - normal: Simulator: RGBA is not supported for JPG format.
2017-04-26T01:50:16.288Z - normal: Simulator: RGBA is not supported for JPG format.
2017-04-26T01:50:16.289Z - normal: Simulator: RGBA is not supported for JPG format.
2017-04-26T01:50:16.292Z - normal: Simulator: Assert failed: only RGBA8888 can be saved as image
cc.loader.load({url: loadpath, type: ‘jpg’}, function (err, tex) {
if (err) {
cc.error(err);
}
else {
var spriteFrame = new cc.SpriteFrame(tex);
var renderTexture = cc.RenderTexture.create(tex.width, tex.height, cc.Texture2D.PIXEL_FORMAT_RGB888)//, gl.DEPTH24_STENCIL8_OES);
renderTexture.getSprite().setSpriteFrame(spriteFrame);
renderTexture.saveToFile(filepath);
callback(spriteFrame);
}
});
这是我的代码,这样不行。
if (!jsb.fileUtils.isDirectoryExist(dirpath)) {
jsb.fileUtils.createDirectory(dirpath);
}
var spriteFrame = new cc.SpriteFrame(tex);
var renderTexture = cc.RenderTexture.create(tex.width, tex.height, cc.Texture2D.PIXEL_FORMAT_RGBA8888)//, gl.DEPTH24_STENCIL8_OES);
renderTexture.getSprite().setSpriteFrame(spriteFrame);
renderTexture.saveToFile(filepath, cc.ImageFormat.JPG, false);
callback(spriteFrame);
这是我的代码