如何使用GD调整上传图像并将其转换为PNG?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我想允许用户上传各种格式的头像类型图像(至少GIF,JPEG和PNG),但要将它们全部保存为PNG数据库BLOB。如果图像是超大的,按像素,我想在DB插入之前调整它们的大小。

使用GD进行大小调整和PNG转换的最佳方法是什么?

编辑:可悲的是,只有GD才能在我需要使用的服务器上使用,没有 ImageMagick

提问于
用户回答回答于

如果要使用gdlib,请使用gdlib 2或更高版本。它有一个名为imagecopyresampled()的函数,它会在调整大小时内插像素并且看起来更好。

此外,我一直听到网络上注意到在数据库中存储图像是不好的形式:

  • 访问速度比磁盘慢
  • 您的服务器需要运行脚本才能访问映像而不是简单地提供文件
  • 你的脚本现在负责Web服务器用来处理的很多东西:
    • 设置正确的Content-Type标头
    • 设置正确的缓存/超时/电子标签标头,以便客户端可以正确缓存图像。如果不能正确执行此操作,则会在每个请求上点击图像服务脚本,从而进一步增加服务器上的负载。

我能看到的唯一优势是您不需要保持数据库和图像文件的同步。我仍然会建议反对它。

用户回答回答于

您的流程步骤应如下所示:

  1. 验证文件类型
  2. 使用imagecreatefrom *将图像加载到GD中(如果它是受支持的文件类型)
  3. 使用imagecopyresizeimagecopyresampled调整大小
  4. 使用imagepng保存图像($ handle,'filename.png',$ quality,$ filters)

ImageMagick更快,生成更好的图像,更易于配置,最终(IMO)更容易编码。

@ceejayoz只是等待新的GD - 这是像MySQLi的OOP,它实际上并不坏:)

扫码关注云+社区

领取腾讯云代金券