6

我需要旋转一些现有的 JPG 图像。它们已经丢失了一些细节,但我现在想旋转它们并且不再丢失更多细节。

通过一些研究,似乎唯一的 PHP 无损图像旋转库是使用jPegTran库。

在进行无损jpg旋转时还有其他选择吗?

谢谢!

4

3 回答 3

7

是否可以通过 exec('commandline');调用外部程序说losslessrotator ?

另一种选择是jpegclubjpegtran

于 2010-07-27T12:04:21.220 回答
2

将 cw 或 ccw 旋转 90 度时要小心 jpegtran,它不会按预期旋转所有像素,因为它只能在尺寸为 jpeg 块大小的倍数(通常为 8x8 像素)的区域内进行无损旋转。它在内部旋转每个块内的像素以避免重新压缩图像,但不能像那样旋转边缘块。所以使用 jpegtran -rotate 90 或 270 你会在边缘留下一小条未旋转的像素,你需要使用 -trim 选项来摆脱它们,但是结果图像会小几个像素比原来的。

因此,虽然它是无损旋转,但您最终仍会在此过程中丢失一些像素。

于 2011-04-06T05:04:46.283 回答
-11

JPEG 是一种有损格式,所以答案是否定的,您无法在任何应用程序、编程语言或大师冥想上创建 JPEG 的无损旋转。

但是,您可以做的是$quality在保存旋转的 JPEG 时使用该参数来最大程度地减少图像数据丢失,如果您将其保存为 JPEG 格式。如果您以无损格式保存它,那么您已经最大限度地减少了图像数据丢失。

例子:

$img = imagecreatefromjpeg($file);
$rot = imagerotate($img, 90, 0);
imagejpeg($rot, $output, 100); /* set quality to 100% */
于 2010-07-27T18:06:17.743 回答