从二进制1';创建位图/画布图像的算法;s和0';用JavaScript可视化地查看数据?
假设标准JavaScript字符串中有20164个二进制数字,例如:从二进制1';创建位图/画布图像的算法;s和0';用JavaScript可视化地查看数据?,javascript,jquery,canvas,svg,bitmap,Javascript,Jquery,Canvas,Svg,Bitmap,假设标准JavaScript字符串中有20164个二进制数字,例如: var data = '101010101010101010101010100110001011010101101' ... 我想做的是通过将这些数字转换为位图或HTML5画布图像来查看它们的视觉表示。所以如果我循环所有的位,它遇到一个1,它将画一个黑色像素,一个0,像素将是白色的 所以我猜我需要一个142 x 142像素的网格,看起来像这样: JavaScript中的算法或方法是什么?我所需要做的就是在网页上显示它,这样
var data = '101010101010101010101010100110001011010101101' ...
我想做的是通过将这些数字转换为位图或HTML5画布图像来查看它们的视觉表示。所以如果我循环所有的位,它遇到一个1,它将画一个黑色像素,一个0,像素将是白色的
所以我猜我需要一个142 x 142像素的网格,看起来像这样:
JavaScript中的算法或方法是什么?我所需要做的就是在网页上显示它,这样创建一个基本的位图、画布或SVG图像就可以了
非常感谢您可以这样做
var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");
var image = new Image();
image.src ="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
image.onload = function() {
ctx.drawImage(image, 0, 0);
};
你对HTML5画布的想法完全正确。如果不想使用base64数据,可以尝试以下方法 Javascript(无错误检查):
var string=“1010101…”;
var ctx=document.getElementById(“画布”).getContext(“2d”);
ctx.fillStyle=“#FFF”//先用白色填充
ctx.fillRect(0,0,142,142);
ctx.fillStyle=“#000”;
对于(var i=0;i<142;i++){//循环遍历每个字符
对于(var j=0;j<142;j++){
if(string[i*142+j]=='1')//如果字符为一,
fillRect(i,j,1,1);//用黑色填充像素
}
}
HTML:
如果使用此选项,应确保检查字符串的长度是否为预期长度。您也可以不使用JS直接将图像包含在HTML中: 例如:
<img alt='' src='data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7'/>
但图像必须采用正确的格式:jpg、tiff、png等,而不仅仅是位图。
您可以轻松地将位图转换为BMP等格式。好的,那么我必须先将其转换为BASE64?看起来很有希望,你能把HTML标记也放进去吗?字符串就是字符串,所以你可以把它放在任何可以保留字符串的地方。用白色填充所有内容,然后只画黑色像素怎么样?这将是一个更好的主意。真不敢相信我居然没想到。
<body>
<canvas width=142 height=142 id="canvas"></canvas>
</body>
<img alt='' src='data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7'/>