簡體   English   中英

如何使用php從二進制blob數據中獲取bmp圖像

[英]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

PHP : 二進制圖像數據,檢查圖像類型

他們是。 我可以輕松地調整它並更正我的文件輸出格式,但這不是我真正的問題。 我的問題是.bmp文件由於某種原因沒有顯示。

問題是BLOB ,它被限制為 65535 字節。

位圖大約是壓縮圖像大小的 4-8 倍,很可能需要更多空間才能放入數據庫。

我建議將列更改為LONGBLOB或至少MEDIUMBLOB

您也不需要來自 github 的庫,如果圖像已完全存儲,您可以像使用 png 或 jpeg 一樣使用file_put_contents() (這是二進制安全的,是的!)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM