canvas保存的base64图片可以在前端转换成png格式嘛?

如题! 需求是转换成png格式 然后传给后端保存, 已经交给后端进行转换处理!
但是我还是比较好奇,前端能直接转成图片格式 传给后端嘛。
如不能,原因是什么! 不太懂,网上搜索资料零零散散


回答:

你要知道png文件也不过是一个二进制文件而已,理论上你只要写个转码器想转成什么格式都可以。而且data uri可能也是个png图片,这种情况没必要转换。如果不是png格式你只要写个转码工具也能实现。而且有一些开源的纯js实现的png读写工具( 比如 https://github.com/image-js/f... ),你也没必要自己去写这个encoder


回答:

  function dataURLtoFile(dataurl, filename) {

let arr = dataurl.split(',');

let mime = arr[0].match(/:(.*?);/)[1];

let bstr = atob(arr[1]);

let n = bstr.length;

let u8arr = new Uint8Array(n);

while (n--) {

u8arr[n] = bstr.charCodeAt(n);

}

return new File([ u8arr ], filename, { type: mime });

};

dataURLtoFile(base64, 'image.jpg');


回答:

转换图片一图流,你想要的都在这里了~看你后端支持啥形式的 就给他啥形式的了
canvas保存的base64图片可以在前端转换成png格式嘛?
其中Canvas 对象提供的 toDataURL() 方法,该方法接收 type 和 encoderOptions 两个可选参数。 type 表示图片格式,默认为 image/png。就符合你的需求了。
下列为转blob给服务端的实例代码,可以参考看看

 var blob = dataURItoBlob(someDataUrl); 

var fd = new FormData(document.forms [0]);

var xhr = new XMLHttpRequest();

fd.append("myFile",blob);

xhr.open('POST','/',true);

xhr.send(fd);

以上是 canvas保存的base64图片可以在前端转换成png格式嘛? 的全部内容, 来源链接: utcz.com/p/936322.html

回到顶部