JavaScript 图片RGBA数据转base64编码

假设一张图片60*60,那么就是3600个像素,每一个像素点RGBA描述需要4个数字,也就是描述这一张图片需要3400*4=13600。数组长度要达到13600才可以正常描述这个图片。

以下是js转换RGBA数据到base64格式的demo(适用于Web)

<!DOCTYPE html>
<html>
<body>
<img  id="myimage"></img>
<script>
function rgbaTobase64(array,width,height)
{
	let arr = new Uint8ClampedArray(width*height*4);
	for(let i=0;i<width*height*4;i++){
	  arr[i]=myarray[i];
	}
	// Initialize a new ImageData object
	let imageData = new ImageData(arr, width,height);
	const c1 = document.createElement("canvas");
	var ctx1=c1.getContext("2d");
	ctx1.putImageData(imageData,0,0);
	let dataURL = c1.toDataURL("image/png");
	return dataURL;
}
let myarray=[73,73,73,255,...太长,省略];
let width=60;
let height=60;
let base64=rgbaTobase64(myarray,60,60);
document.getElementById('myimage').src=base64;
</script>

</body>
</html>

以下是cocos专用RGBA数据转spriteFrame(适用于cocos编译的web平台和windows平台,其他平台未测试。)

public static rgbaToSpriteFrame(rgbastr)
    {
        let myarray=rgbastr.split(",");
        let width=64;
        let height=64;
        let arr = new Uint8ClampedArray(width*height*4);
        for(let i=0;i<width*height*4;i++){
            arr[i]=myarray[i]-0;
        }
        var texture = new cc.RenderTexture();
        texture.initWithData(arr,32,width, height);
        //texture.update({minFilter:cc.Texture2D.Filter.NEAREST,magFilter:cc.Texture2D.Filter.NEAREST,format:cc.Texture2D.PixelFormat.RGBA32F});
        var newframe = new cc.SpriteFrame(texture);
        return newframe;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值