Imagick:: resizeImage vs Imagick:: масштабирование

каковы различия между resizeImage и scaleImage?

мне нужно изменить размер изображения, если его размер > $myLimit

пример (псевдокод):

$myLimit = 1MB
user uplaod an image of 1000x1000 of 2MB
2MB > $myLimit
while( $imagefilesize > $myLimit  ) {
  resizeImageBy 0.9%;
}

//> output 900x900 image of 900 kB

на while блок, какой из двух методов лучше использовать?

Edit: я нашел что-то, что может помочь:http://www.imagemagick.org/Usage/resize/ но может ли кто-нибудь упростить это?

3 ответов


разница между ними, кажется, в том, что scaleImage делает необработанный размер на основе пикселей, в то время как resizeImage можно использовать фильтр интерполяции:

imagick::INTERPOLATE_AVERAGE
imagick::INTERPOLATE_BICUBIC
imagick::INTERPOLATE_BILINEAR
...

что, вероятно, даст лучшие результаты.

подробнее о различных методах интерполяции на Википедия.


блестящий, их собственная документация ужасна... Но хорошо: мне кажется, что resizeImage более мощный, и поэтому лучший выбор... этой ссылке показывает использование вместе с некоторыми измерениями для различных фильтров.


согласно моему выводу, когда вы хотите уменьшить изображение, используйте resizeImage. Потому что это дает вам контроль над качеством изображения и типом фильтра, который вы хотите использовать. Но в том же случае scaleImage также является хорошим выбором, потому что, когда вам нужно уменьшить изображение, скажем, в 10 раз, и вы используете resizeImage, тогда ваше результирующее изображение будет иметь много графических ошибок.

во втором случае, когда вам нужно масштабировать и изображение, то resizeImage будет определенно имейте графическую ошибку, как в то время как метки и линии и другие вещи. В таком случае, scaleImage придет на помощь.