[英]How to get bmp image from from binary blob data with php
我試圖用 2 天的時間來找到一種從數據庫中檢索一些圖像的方法。 它們被保存為二進制字符串(我在某處讀過這個術語,但坦率地說以前從未聽說過)。
大多數圖像都是.jpeg
格式,很容易獲取並保存到文件中。 但我的問題是.bmp
圖像。 出於某種原因,我無法顯示。
現在,我使用一個簡單的代碼來獲取圖像並將其保存到文件中:
$img = $row['image'];
file_put_contents("file.jpeg", $img); //Doesn't matter what format i put there.
在.jpeg
和.png
工作正常,但在我嘗試顯示時無法讀取.bmp
格式。
我已經找到但沒有解決的事情:
原因:兩者都嘗試轉換圖像,但有些部分丟失,變黑。
順便說一句,我不確定這是否會影響問題,但在我的項目中我使用了這個庫https://github.com/Intervention/image ,只有這樣我才能看到圖像的“半轉換”。 使用file_put_contents()
它仍然無法讀取。 所以我的實際代碼是這樣的:
$img = Image::make(imagecreatefrombmpstring($item['image']));
$filename = __DIR__ . '/test.jpeg';
$img->save($filename);
編輯:
我在下面的這個解決方案之前使用.bmp
檢查我擁有的圖像是否是.bmp
:
他們是。 我可以輕松地調整它並更正我的文件輸出格式,但這不是我真正的問題。 我的問題是.bmp
文件由於某種原因沒有顯示。
問題是BLOB
,它被限制為 65535 字節。
位圖大約是壓縮圖像大小的 4-8 倍,很可能需要更多空間才能放入數據庫。
我建議將列更改為LONGBLOB
或至少MEDIUMBLOB
。
您也不需要來自 github 的庫,如果圖像已完全存儲,您可以像使用 png 或 jpeg 一樣使用file_put_contents()
(這是二進制安全的,是的!)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.