我想從PNG文件中提取兩個字段。即,幾何字段和元數據中的一個字段。用PHP讀取PNG元數據的最快方法
我能做的最快的方式是什麼?我已經對目前執行此操作的腳本進行了基準測試,到目前爲止,最慢的操作是在PNG文件上執行實際的ImageMagick「識別」程序。 (0.4秒VS0.0001秒解析爲幾何形狀和8.39E-5秒輸出陣列來解析來自元數據的關鍵短語)
預先感謝任何幫助,
喬納森
我想從PNG文件中提取兩個字段。即,幾何字段和元數據中的一個字段。用PHP讀取PNG元數據的最快方法
我能做的最快的方式是什麼?我已經對目前執行此操作的腳本進行了基準測試,到目前爲止,最慢的操作是在PNG文件上執行實際的ImageMagick「識別」程序。 (0.4秒VS0.0001秒解析爲幾何形狀和8.39E-5秒輸出陣列來解析來自元數據的關鍵短語)
預先感謝任何幫助,
喬納森
我不熟悉任何現成的庫或類在不使用子進程調用的情況下在PHP中執行它,但如果找不到它,編寫自己的程序肯定會成爲一種方法。
PNG是一個相當簡單的塊流格式,所以尋找一個特定的塊和提取一些頭字段是微不足道的。
所有你需要的東西是讀取和檢查8字節的89 50 4E 47 0D 0A 1A 0A
PNG頭,然後在讀取8個字節(塊長度加類型)和尋找塊的長度之間交替使用長度,直到你點擊塊類型想。
對於幾何形狀,假設PNG遵循的規範,這裏是它會怎麼走:
type = IHDR
它可能需要我5到15分鐘,在Python中掀起類似的東西。 (我用RAR和GIF做過類似的事情)也許在PHP中是15到25,因爲我在做低級文件I/O方面的經驗不足。
感謝您對PNG標題的解釋。你的回答讓我走上了正確的道路 - 謝謝! – 2010-11-05 01:03:39
向我們顯示您的代碼,所以我們不需要複製 – stillstanding 2010-11-04 04:21:58
Mine是一個非常簡單的exec()調用,用於'識別-verbose {$ file_name}'(當然有轉義)。該呼叫本身需要0.4秒。 – 2010-11-04 13:30:12