首页 > 解决方案 > IMAGICK 从更大的图片中裁剪图像后,边框半径变得疯狂

问题描述

我使用 Imagick 处理所有操作。

$finalWHRatio = $finalW/$finalH;
    $im = new \imagick($srcFilePath);
    $im -> setResolution(300, 300);
    $im -> setImageFormat('gif');

    $this->autoRotateImage($im);

    $geo = $im->getImageGeometry();
    $srcImgWidth = $geo['width'];
    $srcImgHeight = $geo['height'];
    $srcWHRatio = $srcImgWidth/$srcImgHeight;

    $resizedH = '';
    $redizedW = '';
    if($srcWHRatio > $finalWHRatio){
        $resizedH = $finalH;
        $resizedW = $srcWHRatio*$finalH;

        $im -> resizeImage($resizedW, $resizedH, \Imagick::FILTER_LANCZOS, 1);

        $x_crop = $resizedW/2 - ($finalW/2);
        $y_crop = 0;
        $im -> cropImage($finalW, $finalH, $x_crop, $y_crop);
    }else{
        $resizedW = $finalH;
        $resizedH = $finalW/$srcWHRatio;

        $im -> resizeImage($resizedW, $resizedH, \Imagick::FILTER_LANCZOS, 1);

        $x_crop = 0;
        $y_crop = $resizedH/2 - ($finalH/2);
        $im -> cropImage($finalW, $finalH, $x_crop, $y_crop);
    }

现在裁剪和调整大小后,我有 - 120x120 像素的图像。但是当出现在个人资料页面上时,如果从肖像中裁剪会出现这样的情况

图像

如果图像是横向的,则图像边框失真是水平的。

是否有一些其他信息编码到图像中我应该改变?还是css的问题?

标签: imagick

解决方案


我用 $im -> setImagePage($finalW, $finalH, 0, 0); 现在它工作正常


推荐阅读