php - 将全景图像调整为固定大小

标签 php resize

我想将图像大小调整为固定宽度和高度(即 150px)。然而,有一个问题,如果原始照片(例如全景照片)的高度和宽度有很大差异,则调整大小的缩略图看起来很糟糕。有没有任何智能解决方案可以将照片大小调整为固定的宽度和高度?例如,请看一下这个 图像: enter image description here

这是我的代码:

<?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/

相关文章:

PHP7.1 使用 memcached 作为保存处理程序, session 启动缓慢

apache-flex - Flex - ResizeEvent.RESIZE 的问题

android - 使用 Renderscript 调整位图大小

jquery - 如果表格标题有多行并且 colspan 到表格单元格,则表格列大小调整不起作用

android - ImageButtons 大小和位置在 Eclipse 中不起作用

php - 不完全确定( Controller )转发在 Symfony 中是如何工作的

php - 如何通过强制另存为选项来保存网页的内容/文本

javascript - Mixpanel - 根据跟踪的事件获取用户(distinct_id 或其他属性)

javascript - PHP 数组被传递给 javascript 函数但没有执行任何操作

java - 调整浏览器窗口大小后无法从元素获取文本(Chrome)