如何使用php

时间:2015-06-24 15:28:25

标签: php sql image blob bmp

我尝试了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

PHP : binary image data, checking the image type

他们是。我可以轻松地调整它并更正我的文件输出格式,但这不是我真正的问题。我的问题是.bmp文件由于某种原因没有显示。

1 个答案:

答案 0 :(得分:1)

问题是BLOB,限制为65535字节。

位图大约是压缩图像大小的4-8倍,很可能需要更多空间放入数据库。

我建议将列更改为LONGBLOB或至少MEDIUMBLOB

你也不需要来自github的库,如果图像是完全存储的,你可以使用file_put_contents()(二进制安全,是的!),就像使用png或jpeg一样。