Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从二进制1';创建位图/画布图像的算法;s和0';用JavaScript可视化地查看数据?_Javascript_Jquery_Canvas_Svg_Bitmap - Fatal编程技术网

从二进制1';创建位图/画布图像的算法;s和0';用JavaScript可视化地查看数据?

从二进制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中的算法或方法是什么?我所需要做的就是在网页上显示它,这样

假设标准JavaScript字符串中有20164个二进制数字,例如:

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'/>