2009-08-11 24 views
3

有沒有辦法纔讀出BLOB類型字段的幾個字節的數據庫(這個問題並不重要的DB品牌),並確定如果二進制內容的圖像(假設它是下列之一: JPG,GIF,PNG)?我有一個將數據存儲在數據庫中的web應用程序,如果它是一個圖像,我想顯示一個縮略圖,否則我想顯示一個圖標...但我沒有任何其他地方存儲任何MIMETYPE信息的blob (這不是我的設計)......因爲它是一個Web應用程序,圖像的加載需要從寫出來的<IMG>標籤在一個單獨的呼叫(getImage.ashx)發生..當我寫出來標籤我不希望讀取整個blob到一個庫中,確定它是否是一個圖像,調整它的大小等等等等......我希望能夠看到前幾個字節和知道我是否需要寫標籤。我不明白圖像文件結構/格式是否足以知道在前幾個字節中是否有某種標準頭文件,我可以讀取它們來判斷它是JPG,GIF還是PNG。確定如果blob是一個圖像,而不加載整個字段?

有意義嗎?如果你想幫助我明確(而不是通常回答是否可以做到),那麼我使用.NET C#和SQL 2005

感謝

回答

4

PNG圖像開始:89 50 4E 47 0D 0A 0A 1A ;參見http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html

GIF以47 49 46 38 37 61(GIF87a)或47 49 46 38 39 61(GIF89a) 開頭;見http://www.fileformat.info/format/gif/egff.htm

JPEG文件開始FF FF D8 E0 xx月xx 4A 46 49 46 00(編輯:將所述報頭的缺失部分; xx月xx是對標題長度,以字節爲單位);看到http://www.obrador.com/essentialjpeg/headerinfo.htm

參考:http://wangrui.wordpress.com/2007/06/19/file-signatures-table/

1
  • JPEG文件開始FF D8 FF
  • GIF文件與GIF89a47 49 46 38 39)開始
+0

謝謝Quassnoi ......我會接受你的,但奧倫給我請 – 2009-08-11 16:55:22

1

這是把它回老同學(用於數據訪問的策略)。無論如何,您可以使用DataReader來獲取字段和流結果,然後查看第一個8字節以查看您正在處理的圖像類型。

見此文出於how to attach a streamreader to your datareader前奏。所有這一切說,我可能只是得到所有的字節,除非圖像是巨大的,主要是因爲檢查標題時獲得的任何速度可能會在第二次陷入井中時丟失。

另一個策略可能是創建來檢查該字段和暴露的類型,基於所述第一標題字節,在SQL的圖。有一個醜陋的,但在捏工作。

+0

悅...感謝您的答覆所有三個圖像類型。我很欣賞你提供的額外信息/評論,並可能會按照你的建議......但技術上Oren在你面前並且很好地回答了我的問題,所以我猜他贏了。但我會投票答覆你的答案 – 2009-08-11 16:54:52

相關問題