Подтвердить что ты не робот

Imagick:: resizeImage vs Imagick:: scaleImage

В чем разница между 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/ Но может ли кто-нибудь упростить это?

4b9b3361

Ответ 1

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

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

что может привести к лучшим результатам.

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

Ответ 2

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

Ответ 3

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

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