2014-02-12 69 views
1

我使用图像魔术师裁剪图像并将图像大小调整为精确大小 - 230 x 300像素。 大约90%的图像被调整大小,并确定尺寸,但其中一些不是。使用图像魔术师裁剪图像并调整图像大小

我的代码:

1) 原大小:533x800 调整为:229x373

2) 原单未裁剪并正确调整大小的图像的

$magicianObj = new \Application\Model\ImageMagician($imageLocation); 
$magicianObj -> resizeImage(230, 300, 'crop'); 
$magicianObj -> saveImage($thumb2, 100); 

几个例子尺寸:567x850 改变尺寸为:229x346

3) 原始大小:245x398 调整大小为:229x373

是否有任何选项可以调整大小并将它们裁剪为精确大小?

+0

嗯,我建议你开始实施错误检测和处理...在软件中,你不能总是盲目地认为所有的东西都能正常工作。 _we_如何知道图片转换失败的原因?我们没有您的图像... – arkascha

+1

从参数'crop'的文档:_“将调整图像大小,然后裁剪图像以获得最佳拟合效果,使图像成为您指定的确切大小” - - 如果它没有履行它所承诺的,那么你应该提交一份错误报告。 – CBroe

+0

@arkascha你不需要图像。我处理了大约3,5万张照片,只有其中一些被重新调整为不同的尺寸。我知道这一定是逻辑解释。这不是巧合。 – 5k7

回答

2

我刚刚有这个问题,并且找不到任何其他问题,所以我认为它的价值。

由于某种原因没有通过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']); 
+0

我今天会检查一下。 Thx回复。 – 5k7

+0

解决了这个问题。再次感谢您的回复 – 5k7

+0

完美:)谢谢 –