我想在指定的x,y尺寸下创建单个块颜色的任意大小的png和jpeg图像,但是我不想通过在内存中生成原始图像并由于潜在的内存编码/压缩它来实现这一点要求。
如何做到这一点?
答案 0 :(得分:1)
你可以制作自己的发电机。 PNG生成器的伪代码是:
write_png_header(width,height);
gzip_scanline(width,colour);
for(y=1; y<height; y++) { // scanline 0 already written
write_type_copy_previous();
gzip_zero_delta(width);
}
答案 1 :(得分:1)
目前还不清楚您使用的语言或用例是什么,但我使用imagemagick套件中的convert
程序执行此操作:
convert -size 300x300 xc:transparent missing_normal.png
如果您要为浏览器创建图像,则只需创建一个1x1图像,然后使用width和height属性让浏览器为您缩放。
答案 2 :(得分:0)
如果你想要的是动态创建一个随意大的PNG图像,将其写入流(文件,网络或其他)而不在内存中创建它,你可以使用-in Java- this {{3}库(免责声明,我写的)。例如,这会生成黑色RGB8图像:
PngWriter png = FileHelper.createPngWriter(
new File(filename),
new ImageInfo(cols, rows, 8, false),false);
ImageLine iline = new ImageLine(png.imgInfo);
for (int j = 0; j < cols ; j++)
ImageLineHelper.setPixelRGB8(iline, j, 0);
for (int row=0;row<rows; row++) {
iline.setRown(row);
png.writeRow(iline);
}
png.end();