2013-10-06 75 views
0

本质上,我的问题是找到一个简单的方法来创建一个数组中的图像文件。从数组创建图像文件

我的问题是将CUPS光栅文件解析为图像。 CUPS RGB光栅文件标题为1800字节。如果我输入宽度和高度,我可以按照Mac顺序将文件中包含的光栅阵列正确读入Photoshop,并使用交错的16位数据00RRGGBB。我写了一个实用程序,它从头文件中提取宽度和高度。

我想编写另一个命令行实用程序,它将宽度,高度和文件名作为输入,截断光栅文件的前1800个字节,并创建Tiff或BMP或任何最容易编写的内容图像与其余数组中包含的数组 - 任何众所周知的图像格式都可以。

程序应该是C或Python,在Mac,Linux下运行。

+0

您的输入尺寸是32位,而不是16位[BMP文件格式](http://en.wikipedia.org/wiki/BMP_file_format)是众所周知的,您可以直接写出它的标头(具有正确的W,H和行跨度值)。然后复制你的数据,最后一行,并以ABGR顺序。如果你的alpha总是0,你可以用24位BMP做,但是你也需要考虑行填充,这可能很麻烦。 – usr2564301

+0

哦,等待 - 你必须表示每个*分量*是16位宽。如果是这样,你想/需要保存这个吗? BMP仅8位/组件。 – usr2564301

+0

是的,每种颜色都是16位。所以00RRGGBB是一个32位字。我已经写了一个文件解析器,它获取W和H,然后逐字读入数组(实际上一行一行地读),所以我的问题是将它作为文件写出来。我强烈希望以16位来完成(没有数据丢失),但这不是必要的。文件大约80MB(一页CUPS栅格后台位图)。 – user2851797

回答

0

对于Python,PIL是此任务的工具。在图像对象上使用putdata()(在链接上搜索putdata)方法将列表中的像素放入图像中。

0

您可以尝试GDAL,它支持多种图像格式。您可以使用RasterIO(...)方法读取图像数据。