【发布时间】:2011-05-08 18:59:45
【问题描述】:
我有一个数据库,其中有一列填充了图像二进制数据。在我做了一些研究之后,我弄清楚了如何检测数据是哪种图像格式。假设我的图像列中的记录是 gif 格式,现在我想用 php gd2 将其保存为 jpeg 格式。请问,谁能告诉我该怎么做?
【问题讨论】:
标签: php image-manipulation binary-data gd2
我有一个数据库,其中有一列填充了图像二进制数据。在我做了一些研究之后,我弄清楚了如何检测数据是哪种图像格式。假设我的图像列中的记录是 gif 格式,现在我想用 php gd2 将其保存为 jpeg 格式。请问,谁能告诉我该怎么做?
【问题讨论】:
标签: php image-manipulation binary-data gd2
如果您只想将图像数据转换为 JPEG,那么您只需要imagecreatefromstring 和imagejpeg。基本上:
imagejpeg(imagecreatefromstring($gif_bindata), "temp.jpeg");
$jpeg_bindata = file_get_contents("temp.jpeg");
就这么简单,因为imagecreatefromstring 会自动检测文件类型(前几个字节包含足够的魔法字节,使检测变得可行)。显然,您可能想改用real temporary filename。
【讨论】:
imagejpeg() 函数始终存储一个 JPEG 文件。您可能没有将其正确保存回您的数据库,或者将错误的二进制字符串发送到您的浏览器。 --- 用周围的代码更新你的问题以及你如何使用它。
我认为您需要对每张图片执行以下操作:
imagecreatefromgif()在gd中打开图片
imagejpeg() 将映像写回磁盘
一般而言,像这样将图像数据保存在数据库中是不好的做法。更好的解决方案是将图像存储在网络服务器磁盘上,但将文件位置存储到数据库中的图像中。例如,如果您这样做了,那么解决您解释的问题会容易得多!
【讨论】:
您只需要 imagecreatefromstring() 来读取数据和 imagejpeg() 以 jpeg 格式输出。
【讨论】: