2010-09-01 12 views
6

Non mi piace l'immagine ridimensionata esco,PHP GD: cattiva qualità sul ridimensionamento?

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

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

ho aggiunto 100 in ImageJpeg, perché desidero migliorare la qualità, ma non ha ancora andare meglio.

Come posso migliorare la qualità su immagini ridimensionate/miniature

risposta

25

Provare a utilizzare imagecopyresampled invece. Questo fa interpolazione, che renderà le cose molto più belle.

+3

Assicurati anche di usare imagecreatetruecolor(), quando crei $ new_img – JochenJung

+1

Se leggi il manuale PHP, sono abbastanza sicuro che menziona l'utilizzo delle due funzioni sopra elencate. – Christian

+0

Fantastico! Ha funzionato perfettamente, grazie! –

0

Io uso timthumb per questo. Basta dare un'altra possibilità;)

+0

Link no workie. –

+0

Informazioni su TimThumb: https://www.binarymoon.co.uk/2014/09/timthumb-end-life/ –

7

Dal PHP 5.5, è possibile utilizzare imagesetinterpolation per determinare il modo in cui le immagini sono interpolate durante le trasformazioni (tipicamente, di scala e il ricampionamento, ma anche rotazioni, etc.).

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

Per un'immagine downsampling, probabilmente si desidera utilizzare il IMG_SINC algoritmo, si tende a dare risultati più nitidi. Anche per rotazione.

Per il sovracampionamento, IMG_BICUBIC_FIXED, IMG_GENERALIZED_CUBIC e IMG_QUADRATIC potrebbero fornire risultati migliori. Alla fine dovrai testarli: imposta questa opzione sulle risorse di immagine appena create il prima possibile, combinale con il flag di alta qualità quando salvi jpeg e dovresti essere abbastanza libero da artefatti quando usi GD.

+0

Esistono alternative per versioni precedenti come PHP 5.3? – 58YtQ2H83m17838963l61BU07Y8622

+1

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

Problemi correlati