【问题标题】:Retrieve quality from previously generated webp image with imagewebp使用 imagewebp 从先前生成的 webp 图像中检索质量
【发布时间】: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


【解决方案1】:

以外无损/有损,我不知道 WEBP 图像中的任何字段可以告诉您用于对其进行编码的确切参数 - 特别是质量。您可以通过以下方式获取该参数:

webpinfo YOURIMAGE

与其更改文件的名称来记录编码参数,不如使用Extended File Attributes 将该信息保存在文件旁边,因为这不会更改您的命名,这可能会对您的应用程序产生重大影响。

【讨论】:

    【解决方案2】:

    我使用@MarkSetchell 的评论来完成这个

    我使用 php 的 xattr_set 函数来设置自定义属性。和xattr_get 再次检索它。我不完全确定这是否很慢,但我测试过的任何页面似乎都没有减速。

    谢谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2021-11-21
      • 2021-10-27
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 2014-06-18
      • 2013-05-30
      相关资源
      最近更新 更多