Estoy tratando de crear una imagen en miniatura en el lado del cliente usando JavaScript y un elemento de lienzo, pero cuando reduzco la imagen, se ve terrible. Parece que se redujo en Photoshop con el conjunto de remuestreo en 'Vecino más cercano' en lugar de Bicubic. Sé que es posible hacer que esto se vea bien, porque este sitio también puede hacerlo bien utilizando un lienzo. Intenté usar el mismo código que hacen como se muestra en el enlace "[Fuente]", pero aún se ve terrible. ¿Hay algo que me falta, alguna configuración que deba configurarse o algo así?
EDITAR:
Estoy tratando de cambiar el tamaño de un jpg. He intentado cambiar el tamaño del mismo jpg en el sitio vinculado y en Photoshop, y se ve bien cuando se reduce el tamaño.
Aquí está el 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 me equivoqué, el sitio web vinculado no estaba haciendo un mejor trabajo al reducir el tamaño de la imagen. Probé los otros métodos sugeridos y ninguno de ellos se ve mejor. Esto es lo que resultó en los diferentes métodos:
Photoshop:
Lona:
Imagen con renderizado de imagen: optimizar conjunto de calidad y escala con ancho / alto:
Imagen con representación de imagen: conjunto de optimización de calidad y escala con -moz-transform:
Cambiar el tamaño del lienzo en pixastic:
Supongo que esto significa que Firefox no está utilizando el muestreo bicúbico como se supone que debe hacerlo. Solo tendré que esperar hasta que realmente lo agreguen.
EDITAR3: