2016-08-01 39 views
1

所以,如果我有100個二進制圖像類型.bmp我想知道是否有一個庫,我可以用它來保存到一個單一的文件,然後在該文件中讀取,並通過python中的每個圖像迭代。如何將100個二進制圖像保存到單個文件中?

如果沒有庫,我打算讀取所有的100個二進制圖像,然後將它們保存到python數組中,然後將該數組保存到像100_images.format這樣的文件中。

我在想什麼格式可以保存文件,使其儘可能小?由於圖像都是二進制的32乘32像素,我怎樣纔能有效地做到這一點?

我想我可以在100倍的圖像保存到一個數組,像這樣:

array index 
0    0 or 1 for if image 1 pixel at (0, 0) is white(0) or black(1) 
1    0 or 1 for if image 1 pixel at (0, 1) is white(0) or black(1) 
... 
1023   0 or 1 for if image 1 pixel at (31, 31) is white(0) or black(1) 
1024   0 or 1 for if image 2 pixel at (0, 0) is white(0) or black(1) 
... 

然後寫到Python中的文件。但我不知道什麼類型的文件,我應該 使它。然後,在經過100個二進制圖像讀取代碼,我想它的工作是這樣的:

binary_images_manager = new BinaryImagesManager('100_images.format') 

for i in range(number_of_images_to_see): 
    int[][] binary_image = binary_images_manager.readImage(i) 
+0

將使用python將這些文件壓縮到zip/tar.gz文件中解決您的問題,還是存在特定的二進制格式要求? – NuclearPeon

+0

Windows ICO格式可以保存多個'BMP'文件 - https://en.wikipedia.org/wiki/ICO_(file_format) - 儘管我不確定爲什麼有人會這樣做。 'TIF'還可以將多個圖像保存在一個文件中。 –

+0

爲什麼不使用GIF? – Spektre

回答

0

我會做行程編碼: https://en.wikipedia.org/wiki/Run-length_encoding

您可以使用Python中實現的一個: https://www.rosettacode.org/wiki/Run-length_encoding#Python

編碼:

  1. 對於每個圖像矩陣弄平它使用np.flatten
  2. 運行長度編碼的圖像
  3. 的代碼添加到列表
  4. 之後的所有圖像進行了編碼的泡菜列表

解碼:

  1. Unpickle列表
  2. 對於每個列表中的項目解碼運行長度代碼
  3. 將結果向量重新整形爲所需的m atrix shape
相關問題