【发布时间】:2022-09-27 22:43:18
【问题描述】:
我有一个非常复杂的脚本来处理我们的自定义 CMS 中的图像裁剪/调整大小,构建在原生 PHP 8 之上。
我觉得我需要先详细说明我的问题:
我正在裁剪图像并将它们保存为 .webp 文件以提高灯塔分数,它工作得很好,但我有 1 个小问题希望你能帮助我。
我正在使用函数imagewebp(image, dest, quality) 保存图像,我们确保可以控制每张图像的图像质量。因此,如果我们愿意,可以将一个文件裁剪为 70% 质量,另一个裁剪为 90%。问题是现在改变质量。
每次向裁剪器发出请求时,它都会检查原始文件是否比缓存的裁剪版本新,如果是新的,它将创建一个新的缓存版本。很标准的东西。但是,如果不对数据库进行一些重大更改,裁剪者如何知道质量是否发生了变化?
例子:
我们有 image1.png,我们以 500x500px 的质量查看它,质量为 70%。现在,出于某种原因,我们希望该图像质量更高,比如说 90%。我们改变它。下次向裁剪器发出请求时,它会检查文件日期,并且由于原始文件未更新,因此即使我们希望更改质量,它也不会重新裁剪图像。
我的问题: 有什么方法可以让我从裁剪后的文件中读取质量设置吗?所以我可以看看它是否改变了,如果改变了,重新裁剪它。
我知道我可能可以用文件名等来做到这一点,但这需要一些相当大的改变。
-
webpinfo IMAGE.WEBP会告诉你是无损还是有损,但我不知道更多信息。 -
一种选择可能是将编码质量存储在\"扩展属性\",即
xattr附加到webp文件,您可以稍后检查但不会影响文件名。 man7.org/linux/man-pages/man2/getxattr.2.html -
@MarkSetchell 谢谢,我也可以使用 PHP。
-
太好了 - 随时将其发布为答案,以便其他人可以学习并从您的努力中受益。
-
@MarkSetchell,我创建并接受了一个答案!再次感谢您的帮助。回复晚了非常抱歉
标签: php image-processing