Давным-давно я создал небольшую библиотеку для изменения размеров изображений с использованием imagemagick через system(...)
, потому что я не чувствовал, что встроенные функции imagemagick для PHP были достаточными.Imagemagick thumbnail поколение с php - using -crop
Однако недавно мне пришлось перенести это в проект symfony, и я решил использовать sfThumbnailPlugin (если я правильно помню). Это, к сожалению, не включало функциональность посева - то есть для указания желаемого размера, например. 300x300 px и уменьшите эскиз, чтобы он соответствовал. Я решил реализовать эту функциональность самостоятельно, но, похоже, что-то не так.
Всякий раз, когда я изменяю размер изображения до нужного размера, ширина будет больше высоты, пропорции прикручиваются. Взгляните на этот пример: http://i37.tinypic.com/9hkqrl.png - В этом примере верхняя строка - это правильные пропорции, а нижняя строка - проблема.
В этом примере верх и низ должны быть обрезаны.
Вот код для той части, где делается урожай (имена переменных должны быть понятны):
<?php
if ($width/$height > $this->maxWidth/$this->maxHeight) {
// then resize to the new height...
$command .= ' -resize "x'.$this->maxWidth.'"';
// ... and get the middle part of the new image
// what is the resized width?
$resized_w = ($this->maxWidth/$height) * $width;
// crop
$command .= ' -crop "'.$this->maxHeight.'x'.$this->maxWidth.'+'.round(($resized_w - $this->maxWidth)/2).'+0"';
} else {
// or else resize to the new width
$command .= ' -resize "'.$this->maxHeight.'x"';
// ... and get the middle part of the new image
// what is the resized height?
$resized_h = ($this->maxHeight/$width) * $height;
// crop
$command .= ' -crop "'.$this->maxWidth.'x'.$this->maxHeight.
'+0+'.round(($resized_h - $this->maxHeight)/2).'" +repage';
}
Является ли это вторая часть, если заявление, которое производит неверный код.
Может кто-нибудь исправить это для меня? Очевидно, что вычисления ошибочны.
марки этот вопрос, как ответил –
не может до завтра. – phidah