Php 使用图像魔术师裁剪和调整图像大小

Php 使用图像魔术师裁剪和调整图像大小,php,image-processing,Php,Image Processing,我正在使用图像魔术师来裁剪和调整图像的大小,精确到230 x 300像素。 大约90%的图像被调整大小并折叠到准确的大小,但其中一些图像没有 我的代码: $magicianObj = new \Application\Model\ImageMagician($imageLocation); $magicianObj -> resizeImage(230, 300, 'crop'); $magicianObj -> saveImage($thumb2, 100); 一些未正确裁

我正在使用图像魔术师来裁剪和调整图像的大小,精确到230 x 300像素。 大约90%的图像被调整大小并折叠到准确的大小,但其中一些图像没有

我的代码:

$magicianObj = new \Application\Model\ImageMagician($imageLocation);   
$magicianObj -> resizeImage(230, 300, 'crop');
$magicianObj -> saveImage($thumb2, 100);
一些未正确裁剪和调整大小的图像示例:

(一) 原始尺寸:533x800 大小调整为:229x373

(二) 原始尺寸:567x850 大小调整为:229x346

(三) 原始尺寸:245x398 大小调整为:229x373


是否有任何选项可以调整大小并将其裁剪到精确的大小?

我刚刚遇到了这个问题,除了这个问题,我找不到任何其他问题,因此我认为它是值得的

由于某些原因,它在resizeImage函数中未通过此检查:

if (($optimalWidth >= $newWidth && $optimalHeight >= $newHeight)) { 
    $this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight, $cropPos);
  }
看起来您的最佳宽度小于新宽度,它得到229(可能是229.xxxx)作为您的最佳宽度,230是您的新宽度(这正是您想要的宽度)。这就是它调整大小但不裁剪的原因。然而,它可能回显230(这里是899,但如果我回显它写900),不知道为什么。在获取值时使用ceil()应该可以解决它,就在IF上方

$optimalWidth  = ceil($dimensionsArray['optimalWidth']);
$optimalHeight = ceil($dimensionsArray['optimalHeight']);

好吧,我建议你开始执行错误检测和处理。。。在软件中,你不能总是盲目地认为所有的东西都能正常工作。我们如何知道图像转换失败的原因?我们没有您的图像…从文档中的参数
裁剪
:“将调整图像大小,然后裁剪图像以获得最佳匹配,使图像达到您指定的精确大小”-因此,如果它没有做到承诺的,您应该提交错误报告。@arkascha您不需要图像。我处理了大约3,5千张照片,其中只有一些被调整到不同的大小。我知道这一定是合乎逻辑的解释。这不是巧合。请提供一个未裁剪图像的示例,尽管其尺寸比指定的裁剪区域宽。我今天将检查它。谢谢回复。这解决了这个问题。再次感谢您的回复