我想创建尺寸为 m x n 的图像。我需要创建所有可能的图像,其像素为黑色或白色(目前没有其他颜色)。解决此问题的一种方法是创建字段为 0 或 1 的二进制矩阵,表示黑色和白色。矩阵中的每一行是一个图像,每个字段是图像中的一个像素。
我目前有代码来创建一个 m x n 图像,并为每个像素分配颜色:
var fs = require("fs");
var Buffer = require("buffer").Buffer;
var Png = require("png").Png;
var IMAGE_WIDTH = 16;
var IMAGE_HEIGHT = 16;
var rgb_data = new Buffer(IMAGE_WIDTH * IMAGE_HEIGHT * 3);
for(var h = 0; h < IMAGE_HEIGHT; h++)
{
for(var w = 0; w < IMAGE_WIDTH; w++)
{
var p = h * IMAGE_WIDTH * 3 + w * 3;
rgb_data[p + 0] = 255; // r (0-255)
rgb_data[p + 1] = 255; // g (0-255)
rgb_data[p + 2] = 255; // b (0-255)
}
}
var png = new Png(rgb_data, IMAGE_WIDTH, IMAGE_HEIGHT, "rgb")
fs.writeFile("output.png", png.encodeSync().toString("binary"), "binary", function(err) {
if(err) { throw err; }
console.log('image generated!');
});
例如,这会生成一个全白的图像。我需要找到一种方法来为所有可能的黑白组合循环运行此代码。
1x1 图像很简单,要么全白要么全黑。
2x1 图像将具有以下组合,每一行都是一个图像:
1 1 --> all white image
0 0 --> all black image
1 0 --> image with left pixel white, right pixel black
0 1 --> image with left pixel black, right pixel white
2x2 图像将具有以下组合,每行也是一个图像:
0 0 0 0
0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
0 0 1 1
0 1 0 1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
1 1 1 1
等等。这似乎已经为 Matlab解决了,但我需要一个不使用库的 JavaScript(或任何伪代码,真的)解决方案。