PHP JPEG 裁剪:质量下降?

Posted

技术标签:

【中文标题】PHP JPEG 裁剪:质量下降?【英文标题】:PHP JPEG Crop : Loss of quality? 【发布时间】:2010-10-22 15:33:21 【问题描述】:

我正在开发一个网络打印、海报打印应用程序。

我正在考虑使用 php 来裁剪用户上传的图像,我们最终将打印 PHP 裁剪的图像。

我担心用户上传的原始图片和经过 PHP 裁剪后的图片之间的“质量”会有所不同。

PHP在处理时会影响图片的质量吗?还是保留图像的质量并简单地裁剪相关区域?

非常感谢,

BK

【问题讨论】:

【参考方案1】:

JPEG 是有损压缩。有点过于简单,但它通过分析其他像素周围的像素来查看它们的相似程度。并非每个像素都被存储,这意味着不可能简单地从图像数据中切出字节来执行裁剪。如果您要输出 JPEG,您将重新压缩已压缩的图像,并且质量会有所下降。但是,如果您裁剪图像并且输出是无损格式,则不会有质量损失。

需要明确的是,质量损失不在作物操作中。这是图像本身被压缩的方式。如果源图像使用 JPEG 压缩,则质量已经丢失。当您裁剪该图像时,您不会再丢失任何内容,但如果您之后再次输出 JPEG,则需要重新压缩,因此损失更多。

所以最后,让你的最终输出为 PNG 或无损的,你就不用担心了。

【讨论】:

实际上,如果您以块大小的倍数裁剪 JPEG,专业软件可以保存 JPEG 而无需重新编码。 好点乔治。虽然我怀疑它是否适用于此,但一些快速的谷歌搜索发现了一些人在 PHP 文档 cmets 上编写的一些代码,用于手动读取 JPEG。在那里,他计算出块的大小。这可能是一个很好的起点。 php.net/manual/en/function.getimagesize.php#88793

以上是关于PHP JPEG 裁剪:质量下降?的主要内容,如果未能解决你的问题,请参考以下文章

使用 jWindowCrop 裁剪图像 - PHP

使用 php 保存裁剪的图像

PHP中的图像裁剪产生空白结果

在 PHP 中裁剪图像会留下黑色空间

在 python lib 中导入和裁剪 jpeg 的快速方法

裁剪 JPEG 图像而不重新采样