javascript-是否有办法从JS中的图像手动创建base64code
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-是否有办法从JS中的图像手动创建base64code,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1949字,纯文字阅读大概需要3分钟。
内容图文
![javascript-是否有办法从JS中的图像手动创建base64code](/upload/InfoBanner/zyjiaocheng/696/bbcf1123258044858a025c2e81947c67.jpg)
我在html画布上绘制图像.
这是您计算像素的方式
for (var i = 0; i < data.length; i += 4) {
var red = data[i]; // red
var green= data[i + 1]; // green
var blue = data[i + 2] ; // blue
}
这就是您从中创建base64代码的方式
var dataURL = canvas.toDataURL('image/png');
但这会为具有RGBa的png图像创建base64代码.我该怎么做才能仅从第一个通道数据创建base64代码[i],有没有办法手动将其编码为base64或提供toDataURL选项呢?我尝试查找文档,但找不到任何东西
谢谢
编辑
使用markE建议编辑:
var imageData = ctx.getImageData(0,0,cw, ch);
var data= imageData.data
for (var i = 0; i < data.length; i += 4) {
var grayscale = data[i]*0.2126 + data[i +1]*0.7152 + data[i +2]*0.0722;
data[i] = grayscale; // red
data[i + 1] = grayscale; // green
data[i + 2] = grayscale; // blue
}
var binary = new Uint8Array(data.length);
for (var i=0; i<data.length; i++){
binary[i]=data[i];
}
var s=binary.toString();
var base = btoa(s);
解决方法:
你可以:
>将剩余的灰度值保存到Uint8Array,
>使用var s = myUint8Array.toString()对该数组进行字符串化,
> Base64使用btoa对字符串进行编码.
这是示例代码:
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var img=new Image();
img.crossOrigin = "Anonymous";
img.onload=function(){
canvas.width=img.width;
canvas.height=img.height;
ctx.drawImage(img,0,0);
var uint8 = new Uint8ClampedArray(img.width*img.height);
var imageData = ctx.getImageData(0,0,canvas.width,canvas.height);
var data= imageData.data
for (var i = 0; i < data.length; i += 4) {
var grayscale = data[i]*0.2126 + data[i +1]*0.7152 + data[i +2]*0.0722;
uint8[i]=grayscale;
}
var s=uint8[0];
for(var i=1;i<uint8.length;i++){
s+=','+uint8[i];
}
alert('As string: '+s);
var b64=btoa(s);
alert('As base64 string'+b64);
var ss=atob(b64);
alert('Back to original string'+ss);
}
img.src='https://dl.dropboxusercontent.com/u/139992952/multple/house16x16.jpg'
body{ background-color: ivory; }
#canvas{border:1px solid red; margin:0 auto; }
<canvas id="canvas" width=300 height=300></canvas>
内容总结
以上是互联网集市为您收集整理的javascript-是否有办法从JS中的图像手动创建base64code全部内容,希望文章能够帮你解决javascript-是否有办法从JS中的图像手动创建base64code所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。