मैं जावास्क्रिप्ट और एक कैनवास तत्व का उपयोग करके क्लाइंट की तरफ एक थंबनेल छवि बनाने की कोशिश कर रहा हूं, लेकिन जब मैं छवि को छोटा करता हूं, तो यह भयानक लगता है। ऐसा लग रहा है कि यह फोटोशॉप में बेज़ुबिक के बजाय 'नियरेस्ट नेबर' के सेट पर दोबारा सेट किया गया था। मुझे यह पता है कि यह सही लगने के लिए संभव है, क्योंकि यह साइट एक कैनवास का उपयोग करके इसे ठीक कर सकती है। मैंने उसी कोड का उपयोग करने की कोशिश की है जो वे "[स्रोत]" लिंक में दिखाए गए हैं, लेकिन यह अभी भी भयानक दिखता है। क्या मुझे कुछ याद आ रहा है, कुछ सेटिंग जो सेट करने की ज़रूरत है या कुछ और?
संपादित करें:
मैं एक 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:
लगता है कि मुझसे गलती हुई थी, लिंक की गई वेबसाइट छवि को खराब करने के काम से बेहतर नहीं कर रही थी। मैंने सुझाए गए अन्य तरीकों की कोशिश की और उनमें से कोई भी बेहतर नहीं दिखता। विभिन्न तरीकों के परिणामस्वरूप यह है:
फोटोशॉप:
कैनवस:
इमेज-इमेज विथ इमेज-रेंडरिंग: ऑप्टिमाइज़्युअलिटी सेट एंड स्केल्ड विथ चौड़ाई / हाइट:
छवि-प्रतिपादन के साथ छवि: ऑप्टिमाइज़ेशन सेट और स्केल -मोज़-परिवर्तन के साथ:
कैनवस पिक्सैस्टिक पर आकार देता है:
मुझे लगता है कि इसका मतलब है कि फ़ायरफ़ॉक्स अपनी पसंद की तरह bicubic नमूने का उपयोग नहीं कर रहा है। मुझे बस इंतजार करना होगा जब तक वे वास्तव में इसे नहीं जोड़ते।
EDIT3: