2010-06-19 11 views
5

मैं एक वेबसाइट पर छवि अपलोड ले रहा हूं और छवियों को 100 x 100 सफेद वर्ग पर फिट थंबनेल में बदल रहा हूं। समस्या यह है कि छवियां दिखती हैं जैसे वे एंटी-एलियास ठीक से नहीं करते हैं। फ़ोटोशॉप में आकार की छवियों को चिकनी लगती है, लेकिन ये तेज दिखने की तरह कुरकुरा दिखती हैं।php imagejpeg गुणवत्ता बदबू आ रही है: क्यों?

these samples पर एक नज़र डालें, दाईं ओर बाएं और थंबनेल पर पूर्ण आकार दिखाएं (100% पर देखें)। फोटो हास्यास्पद रूप से तेज दिखने से बाहर आता है, लेकिन बहुत से लोगों को इससे परेशान नहीं किया जा सकता है। हालांकि ड्राइंग अस्वीकार्य है। उन घुमावदार रेखाएं केवल एंटी-एलियास नहीं हैं और बिंदीदार रेखाएं बनती हैं।

imjpg() का उपयोग कर रहा हूं, और जेपीजी गुणवत्ता का चयन मैं क्रंचनेस पर कोई प्रभाव नहीं डालता हूं। इसके आसपास के कुछ कोड हैं:

$tmp_img = imagecreatetruecolor($maxSize, $maxSize); 
$white = ImageColorAllocate ($tmp_img, 255, 255, 255); 
ImageFill($tmp_img, 0, 0, $white); 
imagecopyresized($tmp_img, $img, $offsetx, $offsety, 0, 0, $new_width, $new_height, $width, $height); 
$thumbFullPath = "{$pathToThumbs}/{$filenameNoExtension}.jpg"; 
imagejpeg($tmp_img, $thumbFullPath, 90); 

कोई विचार? क्या यह सामान्य है? धन्यवाद!

उत्तर

15

आप प्रयास कर सकते हैंके बजाय । यह धीमा है लेकिन नई छवि में प्रत्येक पिक्सेल के रंग को निर्धारित करने के लिए एक अधिक परिष्कृत एल्गोरिदम का उपयोग करता है।

6

परिवर्तन अंतिम पंक्ति रहे हैं:

imagejpeg($tmp_img, $thumbFullPath, 100);

देखें: http://us4.php.net/manual/en/function.imagejpeg.php

इसके अलावा, का उपयोग करके देखें imagecopyresampled() बल्कि imagecopyresized() से

देखें: http://us4.php.net/manual/en/function.imagecopyresampled.php

+1

90 और 100 के बीच कोई अंतर नहीं होगा। इसके अलावा, मुझे लगता है कि परिणाम को बर्बाद करने वाले सहेजने वाले ऑपरेशन की तुलना में यह स्केलिंग ऑपरेशन अधिक है। इसके अलावा, ओपी ने कहा कि गुणवत्ता को बदलने से कुछ भी बढ़ता नहीं है। – zneak

+0

सही, लेकिन यह मदद कर सकता है ... 10% ... 'imagecopyresampled() 'ने अतीत में मेरे लिए चमत्कार किए हैं। – jordanstephens

+1

सहमत हैं, "imagecopyresized()" –

संबंधित मुद्दे