Я пытаюсь создать уменьшенное изображение на стороне клиента, используя javascript и элемент canvas, но когда я уменьшаю изображение, оно выглядит ужасно. Похоже, что он был уменьшен в фотошопе с передискретизацией, установленной на "Nearest Neighbor" вместо Bicubic. Я знаю, что можно сделать так, чтобы это выглядело правильно, потому что этот сайт может делать это очень хорошо, даже используя canvas. Я пытался использовать тот же код, который они делают, как показано в ссылке "[Source]", но он все равно выглядит ужасно. Есть ли что-то, что я пропускаю, какие-то настройки, которые нужно установить или что-то?
РЕДАКТИРОВАТЬ:
Я пытаюсь изменить размер 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:
 
Холст:
 
Изображение с рендерингом изображения: optimizeQuality установлено и масштабировано по ширине/высоте:
 
Изображение с рендерингом изображений: optimizeQuality установлено и масштабировано с -moz-transform:
 
Размер холста по пикселю:
 
Я предполагаю, что это означает, что Firefox не использует бикубическую выборку, как предполагалось. Мне просто нужно подождать, пока они на самом деле не добавят его.
EDIT3:


