2010-06-19 35 views
5

im chụp ảnh tải lên trên trang web và thay đổi hình ảnh thành hình thu nhỏ phù hợp với hình vuông màu trắng 100 x 100. vấn đề là hình ảnh trông giống như họ không chống bí danh đúng cách. hình ảnh có kích thước xuống trong photoshop trông mịn màng, nhưng những cái nhìn giòn, như siêu sắc nét.stinks chất lượng hình ảnh phpjpeg: tại sao?

hãy xem these samples, hiển thị kích thước đầy đủ ở bên trái và hình thu nhỏ ở bên phải (xem ở mức 100%). bức ảnh xuất hiện trông rất sắc sảo, nhưng nhiều người có thể không bị làm phiền bởi nó. bản vẽ mặc dù là waaay không thể chấp nhận. những đường cong chỉ không chống bí danh ở tất cả và trở thành đường chấm chấm.

im sử dụng imagejpg() và chất lượng jpg tôi chọn không ảnh hưởng đến độ giòn. heres một số mã xung quanh nó:

$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); 

bất kỳ ý tưởng nào? điều này có bình thường không? cảm ơn!

Trả lời

15

Bạn có thể muốn thử imagecopyresampled thay vì imagecopyresized. Nó chậm hơn nhưng sử dụng thuật toán phức tạp hơn để xác định màu của mỗi pixel trong hình ảnh mới.

6

thay đổi dòng cuối cùng để:

imagejpeg($tmp_img, $thumbFullPath, 100);

see: http://us4.php.net/manual/en/function.imagejpeg.php

Ngoài ra, hãy thử sử dụng imagecopyresampled() hơn imagecopyresized()

see: http://us4.php.net/manual/en/function.imagecopyresampled.php

+1

Sẽ không có nhiều sự khác biệt giữa 90 và 100. Bên cạnh đó, tôi nghĩ rằng đó là hoạt động mở rộng quy mô hơn hoạt động tiết kiệm làm lãng phí kết quả. Ngoài ra, OP cho biết việc thay đổi chất lượng không tăng cường bất cứ điều gì. – zneak

+0

phải, nhưng nó có thể giúp ... 10% ... 'imagecopyresampled()' đã làm việc kỳ diệu đối với tôi trong quá khứ. – jordanstephens

+1

đồng ý ", hãy thử sử dụng imagecopyresampled() thay vì imagecopyresized()" –

Các vấn đề liên quan