Ich versuche, ein Thumbnail-Bild auf der Client-Seite mit Javascript und ein Canvas-Element zu erstellen, aber wenn ich das Bild zu verkleinern, sieht es schrecklich. Es sieht aus, als ob es in Photoshop mit dem Resampling auf "Nearest Neighbor" anstelle von Bicubic verkleinert wurde. Ich weiß, dass es möglich ist, dies richtig aussehen zu lassen, weil diese Seite kann das auch mit einer Leinwand gut machen. Ich habe versucht, den gleichen Code zu verwenden, wie er im Link "[Quelle]" gezeigt wird, aber es sieht immer noch schrecklich aus. Gibt es etwas, das ich vermisse, eine Einstellung, die festgelegt werden muss oder etwas?
EDIT :
Ich versuche, die Größe eines jpg zu ändern. Ich habe versucht, die Größe desselben jpg auf der verlinkten Website und in Photoshop zu ändern, und es sieht gut aus, wenn es verkleinert wird.
Hier ist der entsprechende 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:
Anscheinend habe ich mich geirrt, denn die verlinkte Website hat das Bild auch nicht besser verkleinert. Ich habe die anderen vorgeschlagenen Methoden ausprobiert, und keine von ihnen sieht besser aus. So sahen die verschiedenen Methoden aus:
Photoshop:
Segeltuch:
Bild mit image-rendering: optimizeQuality eingestellt und mit Breite/Höhe skaliert:
Bild mit image-rendering: optimizeQuality eingestellt und mit -moz-transform skaliert:
Größenänderung der Leinwand bei pixastic:
Ich schätze, das bedeutet, dass Firefox kein bikubisches Sampling verwendet, wie es eigentlich sein sollte. Ich werde einfach warten müssen, bis sie es tatsächlich hinzufügen.
EDIT3: