2012-08-28 17 views
10

我對底層圖像數據的存儲方式感興趣。例如,可以在Windows中提取圖像並獲取有關圖像的信息(使用相機,日期等)。數據如何存儲在圖像文件中

在一般水平上(我相信PNG,JPEG等不同)圖像有一些類型的頭部分的屬性定義,並可能通過多維數組指定特定像素的顏色的主體部分?

如果您可以查看類似於網頁的來源,圖片來源可能是什麼樣子?如果我在計算機上打開一個JPEG,前幾行看起來像XML。

+4

http://en.wikipedia.org/wiki/Image_file_formats - 按照您想了解的特定格式鏈接,並查看每個格式頁面上的「技術細節」部分。 – DGH

+3

圖像是二元的。如果你在一個支持HEX模式的文本編輯器中打開一個JPEG文件,你將能夠看到* guts *,這樣可以更好地表達http://snag.gy/X1b7B.jpg。例如,還可以查看EXIF瞭解大多數相機如何將信息存儲在jpeg文件頭中的詳細信息。 http://en.wikipedia.org/wiki/Exchangeable_image_file_format –

+0

當你說二進制,像素數據是我假設的二進制文件,但元數據必須存儲在某種類型的鍵值對嗎?我假設可以使用xml,所以如果試圖將文件解釋爲ascii文本,您會看到該鍵/值對(例如xml),但二進制像素數據看起來像是亂碼。 –

回答

2

您所看到的XML是Exchangeable image file format (or Exif)的一部分。如果你在一個十六進制編輯器查看文件,你應該看到標記像這樣:

每個JPEG文件從二進制值「0xFFD8」開始,用二進制 值「0xFFD9」結束。 JPEG數據中有幾個二進制0xFFXX數據,它們被稱爲「Marker」,它表示JPEG 信息數據的週期。 0xFFD8表示SOI(圖像開始),0xFFD9表示 EOI(圖像結束)。

PNG文件將始終以these eight bytes開頭:0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A。然後它具有類似JPEG的機制,使用字節標記來指示數據段。閱讀完整規格here

相關問題