我想将图像大小调整为固定宽度和高度(即 150px)。然而,有一个问题,如果原始照片(例如全景照片)的高度和宽度有很大差异,则调整大小的缩略图看起来很糟糕。有没有任何智能解决方案可以将照片大小调整为固定的宽度和高度?例如,请看一下这个 图像:
这是我的代码:
<?php
$params = getimagesize($tempFile);
$width = $params[0];
$height = $params[1];
$newwidth=150;
$newheight= 150;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
imagejpeg($tmp,$img_name,80);
imagedestroy($src);
imagedestroy($tmp);
?>
是否有任何智能方法可以智能地调整图像大小? 谢谢。
最佳答案
有一个聪明的解决方案,它称为Seam Carving,如果您的服务器支持ImageMagick,您可以这样做:
<?php
$im = new Imagick( 'image.jpg' );
$im->liquidRescaleImage( 600, 100, 3, 25 );
header( 'Content-Type: image/jpg' );
echo $im;
?>
或者,如果不支持,请使用 exec()(小心)将图像作为参数传递给可以执行接缝雕刻的可执行文件。
顺便说一句,它看起来像 twitpic 只是裁剪了平方图像提取物。 在我之前的一个项目中,我使用了以下代码:
if ($image->width > $image->height){
//crop image in proportions 4/3, then resize to 500x300 (or proportionally lower resolution),
//sharp it a little and decrease quality.
//I used one of the Yii framework extensions.
$image->crop($image->width, $image->width/4*3)->resize(500, 300, Image::WIDTH)->sharpen(15)->quality(75);
}
关于php - 将全景图像调整为固定大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157998/