【问题标题】:Imagecopyresampled Auto-Crop ImageImagecopyresampled 自动裁剪图像
【发布时间】:2011-03-18 19:51:24
【问题描述】:

我正在使用 imagecopyresampled 创建基于特定宽度和高度的缩略图。我遇到的问题是他们的身高被压扁了。我想要的是将所有缩略图图像设为 140x84,并且如果它们的纵横比不匹配图像的顶部和底部额外部分被裁剪到中心。

这是我目前所拥有的,任何想法都将不胜感激。

// Create Thumbnail

        $imgsize = getimagesize($targetFile);
    switch(strtolower(substr($targetFile, -3))){
        case "jpg":
            $image = imagecreatefromjpeg($targetFile);    
        break;
        case "png":
            $image = imagecreatefrompng($targetFile);
        break;
        case "gif":
            $image = imagecreatefromgif($targetFile);
        break;
        default:
            exit;
        break;
    }

    $width = 140; //New width of image    
    $height = $imgsize[1]/$imgsize[0]*$width; //This maintains proportions

    $x_mid = $width/2;  //horizontal middle
    $y_mid = $height/2; //vertical middle

    $src_w = $imgsize[0];
    $src_h = $imgsize[1];


    $picture = imagecreatetruecolor($width, $height);
    imagealphablending($picture, false);
    imagesavealpha($picture, true);
    $bool = imagecopyresampled($picture, $image, 0, 0, 0, ($y_mid-(84/2)), $width, $height, $src_w, $src_h); 

    if($bool){
        switch(strtolower(substr($targetFile, -3))){
            case "jpg":
                header("Content-Type: image/jpeg");
                $bool2 = imagejpeg($picture,$file_dir."/thumbs/".$imageName,85);
            break;
            case "png":
                header("Content-Type: image/png");
                imagepng($picture,$file_dir."/thumbs/".$imageName);
            break;
            case "gif":
                header("Content-Type: image/gif");
                imagegif($picture,$file_dir."/thumbs/".$imageName);
            break;
        }
    }


    imagedestroy($picture);
    imagedestroy($image);

【问题讨论】:

标签: php image-resizing


【解决方案1】:

您需要先确定是否要根据图像的高度或宽度重新调整图像的大小。您通常会根据原始图像是纵向还是横向以及所需图像大小的方向来解决此问题。然后,您需要根据您的选择以编程方式计算出另一个优势。

一旦你有了,你可以简单地在 (0,0) 处重新采样你的原始图像,悬垂的图像数据将被截断。

【讨论】:

    猜你喜欢
    • 2016-05-21
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多