我使用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像素的图像。但是在个人资料页面上显示时,如果从“肖像”中裁剪出来,则显示如下
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS91Wk1MYVo2LnBuZyJ9” alt =“ img”>
如果图像是横向的,则图像边界失真是水平的。
我是否应该更改图像中编码的其他信息?还是CSS有问题?
我使用$ im-> setImagePage($ finalW,$ finalH,0,0);现在工作正常