Изменение размера изображения с максимальным разрешением с использованием ImgScalr

Я очень новичок в ImgScalr API. Мне нужно изменить размеры своих изображений для разных видов, один из которых - мобильный, а второй - эскиз. Я использовал метод изменения размера, но сомневаюсь. Какой из методов изменения размера является лучшим для изменения размера изображения из множества доступных вариантов, который сохраняет правильное соотношение сторон (как на изображении, не становится размытым)

Одна вещь, которую я заметил, заключалась в том, что каждый метод изменения размера принимает аргумент targetSize. Как указание этого поля гарантирует, что соотношение сторон изображения не будет затронуто.

Какими должны быть идеальные аргументы для метода изменения размера, учитывая, что мне нужно сгенерировать миниатюрное представление моего входного изображения размером 2 КБ, которое может иметь размер около 2 МБ.

Я немного запутался из-за отсутствия достаточного количества документации и примеров.

1 ответ

Решение

Автор imgscalr здесь - определенно поймите путаницу, сама база кода (если вы заглянули на GitHub) - это почти 50% комментариев, если вам интересно, как работает библиотека, но с точки зрения использования вы правы - я не ставил много времени на примерах.

Надеюсь, я смогу быстро выделить некоторые моменты для вас...

Соотношение сторон

Основной разработчик imgscalr - всегда соблюдать пропорции - поэтому, если вы передадите 200x1 (например, какое-то смешное измерение), он попытается вычислить минимальное измерение, которое будет соответствовать этим "целевым" измерениям.

Это удобно, если вы всегда хотите, чтобы ваши миниатюры были в определенном поле, например, 200x200 - просто передайте это, и imgscalr определит конечную ширину / высоту, которая не будет больше этой (возможно, что-то вроде 200x127 или 78x200)

Качественный

По умолчанию библиотека использует так называемый "сбалансированный" подход к качеству с учетом разницы в изменении размеров, а также увеличения / уменьшения масштаба и выбирает наиболее подходящий подход (скорость по сравнению с качеством).

Вы можете заставить его всегда масштабироваться как можно быстрее (хорошая идея для операций масштабирования) или можете всегда использовать высокое или сверхвысокое качество (хорошая идея, если вам нужны действительно четкие миниатюры или другие операции, которые резко снижают разрешение изображения и вы хочу чтобы они еще выглядели прилично)

Кроме того, вы также можете попросить библиотеку применить некоторую дополнительную фильтрацию к изображению (называемую Image Ops) - я поставляю несколько удобных настроек по умолчанию, таких как сглаживание, если вы получаете неровные края на большом количестве изображений. исходный материал, который вы масштабируете (обычно при масштабировании скриншотов рабочих столов и прочего с помощью прямых линий)

В общем и целом

Библиотека предназначена для максимально простого использования, что не сложнее, чем:

BufferedImage thumbnail = Scalr.resize(src, 128);

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

Надеюсь, это поможет!

Другие вопросы по тегам