Ich versuche, auf der Clientseite ein Miniaturbild mit Javascript und einem Canvas-Element zu erstellen, aber wenn ich das Bild verkleinere, sieht es schrecklich aus. Es sieht so aus, als wäre es in Photoshop verkleinert worden, wobei das Resampling auf "Nearest Neighbor" anstelle von Bicubic eingestellt war. Ich weiß, dass es möglich ist, dass dies richtig aussieht, da diese Seite es auch mit einer Leinwand gut machen kann. Ich habe versucht, denselben Code wie im Link "[Quelle]" zu verwenden, aber es sieht immer noch schrecklich aus. Fehlt mir etwas, eine Einstellung, die eingestellt werden muss, oder so?
BEARBEITEN:
Ich versuche, die Größe eines JPGs zu ändern. Ich habe versucht, die Größe desselben JPGs auf der verlinkten Site und in Photoshop zu ändern, und es sieht gut aus, wenn es verkleinert wird.
Hier ist der relevante Code:
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:
Ich habe mich wohl geirrt, die verlinkte Website hat es nicht besser gemacht, das Bild zu verkleinern. Ich habe die anderen vorgeschlagenen Methoden ausprobiert und keine davon sieht besser aus. Dies führte zu den verschiedenen Methoden:
Photoshop:
Segeltuch:
Bild mit Bildwiedergabe: OptimizeQuality festgelegt und skaliert mit Breite / Höhe:
Bild mit Bildwiedergabe: OptimizeQuality festgelegt und skaliert mit -moz-transform:
Leinwandgröße auf Pixastic ändern:
Ich denke, dies bedeutet, dass Firefox keine bikubischen Proben verwendet, wie es soll. Ich muss nur warten, bis sie es tatsächlich hinzufügen.
EDIT3: