Я намагаюся створити мініатюрне зображення на стороні клієнта за допомогою javascript та елемента полотна, але коли я скорочую зображення, це виглядає жахливо. Схоже, він був зменшений у Photoshop із перестановкою, встановленою на "Найближчий сусід" замість Bicubic. Я знаю, що можна зробити так, щоб це виглядало правильно, адже цей сайт може робити це добре, використовуючи і полотно. Я намагався використовувати той самий код, який вони роблять, як показано у посиланні "[Джерело]", але це все ще виглядає жахливо. Чи щось мені не вистачає, якусь установку, яку потрібно встановити, чи щось?
Редагувати:
Я намагаюся змінити розмір jpg. Я спробував змінити розмір того ж jpg на пов'язаному сайті та у фотошопі, і він виглядає чудово, коли його зменшують.
Ось відповідний код:
reader.onloadend = function(e)
{
var img = new Image();
var ctx = canvas.getContext("2d");
var canvasCopy = document.createElement("canvas");
var copyContext = canvasCopy.getContext("2d");
img.onload = function()
{
var ratio = 1;
if(img.width > maxWidth)
ratio = maxWidth / img.width;
else if(img.height > maxHeight)
ratio = maxHeight / img.height;
canvasCopy.width = img.width;
canvasCopy.height = img.height;
copyContext.drawImage(img, 0, 0);
canvas.width = img.width * ratio;
canvas.height = img.height * ratio;
ctx.drawImage(canvasCopy, 0, 0, canvasCopy.width, canvasCopy.height, 0, 0, canvas.width, canvas.height);
};
img.src = reader.result;
}
EDIT2:
Здається, я помилявся, пов’язаний веб-сайт не робив кращої роботи щодо зменшення іміджу. Я спробував інші запропоновані методи, і жоден з них не виглядає краще. До цього призвели різні методи:
Photoshop:
Полотно:
Зображення з рендерінгом зображення: оптимізуйте набір якості та масштабуйте з шириною / висотою:
Зображення з рендерінгом зображення: оптимізуйте набір якості та масштабуйте за допомогою -moz-перетворення:
Розмір розміру полотна на піксастичному:
Я думаю, це означає, що Firefox не використовує двобічну вибірку, як це належить. Мені просто доведеться почекати, поки вони насправді додадуть.
EDIT3: