Imagick::Изменение размера изображения по сравнению с 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 какой из двух методов я должен использовать?

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

 19
Author: caiosm1005, 2011-03-12

3 answers

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

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

Это, вероятно, приведет к лучшим результатам.

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

 21
Author: Pekka 웃, 2011-03-12 21:05:22

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

 1
Author: Yuri, 2011-03-12 21:06:28

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

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

 0
Author: Uday Hiwarale, 2014-09-24 22:51:54