Estou tentando criar uma imagem em miniatura no lado do cliente usando javascript e um elemento de tela, mas quando diminuo a imagem, ela parece terrível. Parece que foi reduzido no photoshop com a reamostragem definida como 'Vizinho mais próximo' em vez de Bicubic. Eu sei que é possível fazer com que isso pareça certo, porque este site pode fazê-lo bem usando uma tela também. Eu tentei usar o mesmo código que eles fazem, como mostrado no link "[Source]", mas ainda parece terrível. Há algo que estou faltando, alguma configuração que precisa ser definida ou algo assim?
EDITAR:
Estou tentando redimensionar um jpg. Eu tentei redimensionar o mesmo jpg no site vinculado e no photoshop, e parece bom quando reduzido.
Aqui está o código relevante:
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:
Parece que eu estava enganado, o site vinculado não estava melhorando o trabalho de reduzir o tamanho da imagem. Eu tentei os outros métodos sugeridos e nenhum deles parece melhor. É nisso que os diferentes métodos resultaram:
Photoshop:
Tela de pintura:
Imagem com renderização de imagem: optimizeQuality definido e dimensionado com largura / altura:
Imagem com renderização de imagem: optimizeQuality definido e dimensionado com -moz-transform:
Redimensionamento de tela no pixastic:
Eu acho que isso significa que o Firefox não está usando amostragem bicúbica como deveria. Vou ter que esperar até que eles realmente o adicionem.
EDIT3: