2014-02-12 4 views
1

Я использую Image Magician для обрезки и изменения размера изображения до точного размера - 230 x 300 пикселей. Около 90% изображений изменяются и обрезаются до нужного размера, но некоторые из них нет.Обрезать и изменить размер изображения с помощью изображения Magician

Мой код:

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

Несколько примеров изображений, которые не обрезаны и изменения размеров должным образом:

1) оригинал размер: 533x800 изменен до: 229x373

2) оригинал размер: 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

Perfect :) Спасибо –

Смежные вопросы