1

我有一个数据库,其中有一列填充了图像二进制数据。在我做了一些研究之后,我弄清楚了如何检测数据是哪种图像格式。假设我的图像列中的记录是gif格式,现在我想用 php gd2 将它保存为jpeg格式。拜托,有人能告诉我我该怎么做吗?

4

3 回答 3

4

如果您只想将图像数据转换为 JPEG,那么您只需要imagecreatefromstringimagejpeg. 基本上:

imagejpeg(imagecreatefromstring($gif_bindata), "temp.jpeg");
$jpeg_bindata = file_get_contents("temp.jpeg");

就这么简单,因为imagecreatefromstring会自动检测文件类型(前几个字节包含足够的魔法字节以使检测可行)。显然,您可能想要使用真正的临时文件名

于 2011-05-08T19:08:46.393 回答
0

我认为您需要为每个图像执行以下操作:

  • 将 BLOB 图像数据写入文件
  • 在 gd 中打开图像imagecreatefromgif()
  • 将图像写回磁盘imagejpeg()
  • 从文件中读取图像数据并将其写回数据库

一般来说,像这样将图像数据保存在数据库中是不好的做法。更好的解决方案是将图像存储在网络服务器磁盘上,但将文件位置存储到数据库中的图像中。例如,如果您这样做了,那么解决您解释的问题会容易得多!

于 2011-05-08T19:10:14.663 回答
0

您所需要的只是 imagecreatefromstring() 来读取您的数据和 imagejpeg() 以 jpeg 格式输出。

于 2011-05-08T19:14:46.673 回答