2015-02-11 111 views
-1

我想知道爲什麼我們需要解碼讓我們說一個PNG的位圖,以顯示圖像。 爲什麼不只是顯示像這樣(編碼)的PNG。將圖像解碼爲位圖正常,但是爲什麼?

我在這裏問故意類型的問題。很顯然,對我來說這是不可能顯示的編碼圖像就是這樣,但我想知道爲什麼,以及如何將圖像顯示在屏幕上,因爲它很容易只是做:

canvas.drawBitmap(((AndroidImage)Image).bitmap, x, y, null); 

我想了解完整的。我猜我們需要逐個顯示每個像素,但我需要更多細節。

知道該怎麼做很容易,理解原因有點困難。

如果有人有一門課程/政黨成員/條/解釋解釋吧...我將不勝感激

在此先感謝

PS:請不要回答「您需要解碼/轉換PNG以位圖「我知道...這不是我的問題

回答

1

有很多原因。 '文件中的值'和'屏幕上的像素'之間並沒有真正的直接關係。

  1. 您需要知道位圖的寬度和高度。你不能從圖像大小中推斷出它 - 它必須存儲在圖像文件中的某處。 (或其他任何地方,點是,你必須知道它的大小
  2. 你需要知道位圖的位深度和顏色模型。例如,您無法將8位索引圖像直接複製到接受32位BGR排序並使用未使用字節的屏幕上。
  3. 您的示例PNG file format指定所有圖像數據都是壓縮的。這是爲了一個理智的原因:PNG格式被設計爲在網頁上使用,在每個字節仍然計數的時間段內使用。但即使是簡單的BMP文件格式也使用了非常特定的「編碼」形式:在其24位格式中,每行包含每個像素的BGR值集合在末尾填充足夠的字節以使其總長度可以被4整除。
  4. JPEG使用更先進的編碼方案(這在幾個簡短的詞中很難解釋),因此它可以壓縮圖像甚至更多。高級編碼方案允許比常規方法更多的壓縮(這意味着文件'值'和'屏幕上的像素'之間只有最小的關係)。
+0

我要告訴自己一點壓縮它看起來interresting。我認爲這是我需要尋找的......謝謝你的時間。 – 2015-02-12 17:52:27