【发布时间】:2011-03-01 00:52:06
【问题描述】:
目前我正在使用 gd 来转换以 jpg 格式上传的图片
imagjpeg($data,NULL,85)
并将其存储在 blob mysql 字段中。问题是质量。是的,质量很糟糕。带有一些文本的窗口的屏幕截图变得非常漂亮。 (虽然有游戏截图,但质量还可以)
我应该使用 GD 以外的其他库吗? 我应该使用其他 gd 格式吗? (图片png?)
ps。请注意:这不是重复的.. 我不是在问如何将 img 保存到 db
ps2。请注意,如果我应该更改我当前的格式/方法,我必须转换已经在我的数据库中存储为 jpg 的 5000-6000 张图像
ps3。我使用 85 作为 imagejpeg,不能使用更高的值,因为图像大小会比原始版本增长更多
ps4。我需要将图像存储在数据库中,请留在主题中
谢谢大家
=================================
重新表述问题
在imagejpeg($resourceFromImageCreateFromString,NULL,85);imagejpeg($resourceFromImageCreateFromString,NULL,85);之后,我将图像(主要是软件截图,有时是游戏截图)保存在 BLOB 字段中
我遇到的问题是上传的图片与原始图片相比看起来很糟糕,即使它的大小相同。 (有时会因为 85 而变大)
imagejpeg 实现很烂吗?
ps。我的简单上传脚本执行以下调用:
upload file
open it with "rb" (binary)
pass the data to imagecreatefromstring
pass the result to imagejpeg
再次感谢
【问题讨论】:
-
您是否监控了为 jpg 设置的压缩质量?默认是75,试试100? php.net/manual/fr/function.imagejpeg.php
-
您究竟在使用 imagecopyresampled 做什么?降低图像分辨率?拍摄 1000x1000 的图像,重新采样到 100x100,然后再将其放大,不会再次得到原始图像。
-
为什么不直接存储图像而不重新采样呢?
-
抱歉编辑了,我不使用 imagecopyresemlaed。如果图像大于“x”值,我只使用它来缩小尺寸。大多数时候不是,但图像质量仍然很差
-
@yes123 如果您在重新采样以标准化存储类型时遇到很多问题,为什么不添加一个具有图像类型的列,这样您就不必重新采样任何东西,除非它过大。