2010-09-01 31 views
6

Tôi không giống như hình ảnh thay đổi kích cỡ tôi nhận ra,GD GD: Chất lượng kém khi đổi kích thước?

imagecopyresized($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

ImageJpeg ($resized_img,"$path_thumbs/$rand_name.$file_ext", 100); 

tôi đã thêm 100 trong ImageJpeg, bởi vì tôi muốn nâng cao chất lượng, nhưng nó didnt nhận được bất kỳ tốt hơn.

Làm thế nào tôi có thể nâng cao chất lượng hình ảnh thay đổi kích cỡ/thumbnails

Trả lời

25

Hãy thử sử dụng imagecopyresampled để thay thế. Điều đó làm nội suy, mà sẽ làm cho mọi thứ trông đẹp hơn rất nhiều.

+3

Ngoài ra hãy chắc chắn sử dụng imagecreatetruecolor(), khi tạo $ new_img – JochenJung

+1

Nếu bạn đọc hướng dẫn sử dụng PHP, tôi chắc chắn rằng nó được đề cập bằng cách sử dụng hai chức năng trên là rất khuyến khích. – Christian

+0

Tuyệt vời! Làm việc hoàn hảo, cảm ơn bạn! –

0

Tôi sử dụng timthumb cho việc này. Chỉ cần đưa ra một lựa chọn khác;)

+0

Liên kết không hoạt động. –

+0

Thông tin về TimThumb: https://www.binarymoon.co.uk/2014/09/timthumb-end-life/ –

7

Kể từ PHP 5.5, bạn có thể sử dụng imagesetinterpolation để xác định cách hình ảnh của bạn đang suy trong biến đổi (thông thường, rộng và resampling, mà còn quay, vv).

Xem http://php.net/manual/en/function.imagesetinterpolation.php

Đối với hình ảnh downsampling, có thể bạn muốn sử dụng IMG_SINC thuật toán , nó có xu hướng để cho kết quả crisper. Đối với luân chuyển là tốt.

Đối với upsampling, IMG_BICUBIC_FIXED, IMG_GENERALIZED_CUBIC và IMG_QUADRATIC có thể cho kết quả tốt hơn. Cuối cùng, bạn sẽ phải kiểm tra chúng: thiết lập tùy chọn này trên các tài nguyên hình ảnh mới được tạo càng sớm càng tốt, kết hợp nó với cờ chất lượng cao khi lưu jpeg và bạn sẽ không có nhiều đồ tạo tác khi sử dụng GD.

+0

Có bất kỳ lựa chọn thay thế nào cho các phiên bản trước đây như PHP 5.3 không? – 58YtQ2H83m17838963l61BU07Y8622

+1

imagecopyresampled, xem http://php.net/manual/en/function.imagecopyresampled.php – Argo

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