铁铁们。
真的不会了。
我拿到了一个图片的Unit8Array数组,把这个数组转成了base64格式,之后在前面加上了"data:image/;base64,"或者"data:image/png;base64,"的开头,利用下面的代码进行图片分享:
FBInstant.shareAsync({
image: base64Image,
text: ‘This game is really good’,
})
这个分享的代码是对的,我分享一张从png编码为base64的图片可以起作用,但是对于我游戏中的base64不起作用,我认为是由于我的图片不是png格式编码为base64,而是游戏里的截图生成数组转成base64的关系,所以请问大家,应该怎么办呢?
或者换句话说,我现在有一张游戏里截图的Unit8Array数组,如何能生成一张png图片的UnitArray数组,这两者有区别嘛,如果不这样做,这个问题还有其他解决方法嘛
1赞
下面这个代码可以实现,直接自己把unit8array转成base64行不通(这个算法我也是网上抄的,肯定是没错的,而且两者的base64结果差别很大,具体原因我不清楚,如果有大佬,麻烦指点一二,虽然问题已经解决了)
export function getImgBase1(data:Uint8Array, width:number, height:number){
let canvas = document.createElement(‘canvas’);
let ctx = canvas.getContext(‘2d’);
canvas.width = width;
canvas.height = height;
let rowBytes = width * 4;
for (let row = 0; row < height; row++) {
let srow = height - 1 - row;
let imgData = ctx.createImageData(width,1);
let start = srow * width * 4;
for (let i = 0; i < rowBytes; i++) {
imgData.data[i] = data[start + i]
}
ctx.putImageData(imgData,0,row);
}
let dataUrl = canvas.toDataURL(‘image/png’);
return dataUrl
}