2011-06-16 67 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