我目前正在使用 GD 和一些 PHP 来旋转图像。每次旋转后,图像质量都会变差。有没有更好的方法来做到这一点或者这是预期的?
$img = new ImageClass;
list($original, $info) = $img->load($src);
// Determine angle
$angle = strtolower($angle);
if( $angle == 'cw' || $angle == 'clockwise' ) $angle = 270;
if( $angle == 'ccw' || $angle == 'counterclockwise' ) $angle = 90;
$rgb = $img->hex2rgb($bg_color);
$bg_color = imagecolorallocate($original, $rgb['r'], $rgb['g'], $rgb['b']);
$new = imagerotate($original, $angle, $bg_color);
是否可以使用 jquery 旋转图像客户端,然后通过 PHP 将图像保存到服务器?我假设这将有助于提高图像质量。
最佳答案
在我们的共享服务中,我们以不同的方式处理这个问题。我们始终保留原始图像并存储初始旋转(0)。
旋转时,加载原始图像,旋转 +/- 90,并将副本写入文件系统。之后数据库会更新为新的旋转。
不过,您的数据库中还需要两列,用于轮换和轮换的副本位置。我还假设您总是进行初始调整大小(对于不同的大小可能多次调整),以便额外的列始终指向副本而不是有时指向原始而不是旋转直到旋转。
关于每次旋转后 PHP 图像旋转都会失去质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331739/