我需要旋转一些现有的 JPG 图像。它们已经丢失了一些细节,但我现在想旋转它们并且不再丢失更多细节。
通过一些研究,似乎唯一的 PHP 无损图像旋转库是使用jPegTran库。
在进行无损jpg旋转时还有其他选择吗?
谢谢!
我需要旋转一些现有的 JPG 图像。它们已经丢失了一些细节,但我现在想旋转它们并且不再丢失更多细节。
通过一些研究,似乎唯一的 PHP 无损图像旋转库是使用jPegTran库。
在进行无损jpg旋转时还有其他选择吗?
谢谢!
是否可以通过 exec('commandline');调用外部程序说losslessrotator ?
另一种选择是jpegclub的jpegtran
将 cw 或 ccw 旋转 90 度时要小心 jpegtran,它不会按预期旋转所有像素,因为它只能在尺寸为 jpeg 块大小的倍数(通常为 8x8 像素)的区域内进行无损旋转。它在内部旋转每个块内的像素以避免重新压缩图像,但不能像那样旋转边缘块。所以使用 jpegtran -rotate 90 或 270 你会在边缘留下一小条未旋转的像素,你需要使用 -trim 选项来摆脱它们,但是结果图像会小几个像素比原来的。
因此,虽然它是无损旋转,但您最终仍会在此过程中丢失一些像素。
JPEG 是一种有损格式,所以答案是否定的,您无法在任何应用程序、编程语言或大师冥想上创建 JPEG 的无损旋转。
但是,您可以做的是$quality
在保存旋转的 JPEG 时使用该参数来最大程度地减少图像数据丢失,如果您将其保存为 JPEG 格式。如果您以无损格式保存它,那么您已经最大限度地减少了图像数据丢失。
例子:
$img = imagecreatefromjpeg($file);
$rot = imagerotate($img, 90, 0);
imagejpeg($rot, $output, 100); /* set quality to 100% */