2017-04-07 62 views
0

我正在實現剪貼板,我想爲png圖像分配一次內存。有什麼方法可以預測png文件的最大尺寸嗎?有什麼方法可以預測PNG大小?

+0

也許這個答案可以幫助你http://stackoverflow.com/questions/11035715/how-to-determine-png-dimensions-based-on-file-size-limit#11056969 – Jhn

+0

不是真的..... 。 – user3344003

回答

1

甲PNG圖像包括幾件事情:

  1. 簽名和基本元數據(圖像的大小和類型)
  2. 調色板(僅當圖像被索引)
  3. 原始像素數據
  4. 可選的元數據(輔助組塊)
  5. 結束圖像塊的

項1的大小是固定的:8 + 12 + 11 = 31個字節

項目2(如果需要的話)的大小爲至多12 + 3 * 256 = 780字節

項目5的大小是固定的: 12字節

項目3,原始像素數據通常是最重要的一個。已過濾的未壓縮數據達

FUD =(W * C * 8/BPC + 1)* H字節

當W =以像素爲單位的寬度,H =高度以像素爲單位,C =通道(RGB爲3,調色板或灰度爲1,RGBA爲2,GA爲2),BPC =每通道的位數(通常爲8)

用ZLIB壓縮。對於bound precisely the worst case壓縮率實際上是不可能的。在實踐中,人們可能會認爲在最糟糕的情況下,壓縮流將比原始數據多幾個字節。 然後,第3項的大小將被近似地由(再次假設8192個字節的相當小的IDAT組塊大小)由

(FUD + 6)(1 + 12/8192) ~ FUD 

項目4(輔助組塊數據)結合實際上是不可能的結合。

相關問題