Почему мои изображения с измененным размером всегда размыты?

Я использую node.js и sharp для изменения размера изображений, загружаемых моими пользователями. Они всегда расплывчаты. Понятия не имею почему. Вот мой код:

var sharp = require("sharp");

sharp(file.path)
    .resize(width, height).max()
    .toFormat('png')
    .toBuffer(next);
    ...

Изображение с измененным размером размыто. Что мне не хватает?

Кстати, я уменьшаю размер больших изображений до меньшего размера. width и height пропорциональны исходному размеру. Например, если исходный размер был 600x300, тогда width и height будут, например, 300x150. Таким образом, это определенно не проблема с неправильным расчетом ширины и высоты. Я также пробовал то же самое с помощью imageMagick и имел те же проблемы. Я всегда получаю изображение с измененным размером, но оно очень размытое.


person joeygrimes    schedule 15.09.2017    source источник
comment
Вы уменьшаете масштаб более чем наполовину? Если да, работайте поэтапно, уменьшая вдвое размер изображения, пока вы не приблизитесь к окончательному размеру, а затем выполните последний шаг, чтобы завершить работу.   -  person teppic    schedule 15.09.2017
comment
Спасибо за предложение. Я только что сделал это, и изображения все еще размыты, хотя они менее размыты, чем раньше.   -  person joeygrimes    schedule 15.09.2017
comment
Не меняйте размер повторно. Sharp и IM уже используют высококачественный адаптивный инструмент уменьшения размера (lanczos3) - повторное уменьшение размера приведет к снижению качества и будет медленнее.   -  person jcupitt    schedule 15.09.2017
comment
Можете привести пример плохого вывода? Если вы просто хотите, чтобы ваше уменьшенное изображение немного всплывало, попробуйте добавить дополнительный .sharpen() шаг в конец конвейера: sharp.dimens.io/en/stable/api-operation/#sharpen   -  person jcupitt    schedule 15.09.2017


Ответы (1)


С ImageMagick я обнаружил, что с помощью фильтра: "Catrom" https://www.npmjs.com/package/gulp-image-resize/v/0.13.1 и увеличить резкость: "-1,5x1 + 0,7 + 0,02" http://www.imagemagick.org/Usage/resize/#resize_unsharp хорошо работает при уменьшении размера изображения.

person Wilson Walker    schedule 24.05.2020