2011-06-16 65 views
1

我在考虑将任意整数数组数据嵌入到图像文件中。将整数数组编码为图像的策略

我很好奇,看看我的数据看起来像:-)

这是一些浮现在脑海的问题:

  • 什么是允许的整数范围转换? (我的整数在0和Integer.MAX_VALUE之间)。
    • 如何处理0到Integer.MAX_VALUE 8位ARGB整数范围?
  • 这无损图像格式(PNG?)
  • 难道这样的库已经存在?
  • 我也需要解码数据。 :)

回答

4

这是相当简单的,因为当你应对Java的一个BufferedImage,每个像素被存储(或者至少访问)作为一个int本身。如果图像是ARGB(32位),则可以使用所有的值。任何无损图像格式都可以。

int[] array = new int[100]; 
    final BufferedImage im = new BufferedImage(array.length, 1, BufferedImage.TYPE_INT_ARGB); 
    for (int i = 0; i < array.length; i++) 
     im.setRGB(i, 0, array[i]); // NOTE: this is probably optimizable 
+0

虽然ARGB存储诠释值无损,值得强调不使用32位将截断在'setRGB'给出的数据的图像类型,所以通过'getRGB'返回的数据可以是不同的中间体所以一定要使用ARGB(如@Bart和OP建议) – Atreys 2011-06-16 19:42:58