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 придет на помощь.