2010-06-19 30 views
5

im prendere upload di immagini su un sito Web e cambiare le immagini in miniature che si adattano a un quadrato bianco 100 x 100. il problema è che le immagini sembrano non anti-alias correttamente. le immagini ridotte in photoshop appaiono lisce, ma queste appaiono croccanti, come super nitide.php imagejpeg fa schifo: perché?

dai uno sguardo allo these samples, mostrando a grandezza intera a sinistra e le miniature a destra (visualizza al 100%). la foto viene fuori ridicolmente affilato, ma molte persone potrebbero non esserne disturbate. il disegno però è mooolto inaccettabile. quelle linee curve non sono affatto anti-alias e diventano linee tratteggiate.

im using imagejpg(), e la qualità jpg che ho scelto non ha alcun effetto sulla croccantezza. ecco alcuni dei codici che la circondano:

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

qualche idea? è normale? Grazie!

risposta

15

si consiglia di provare imagecopyresampled anziché imagecopyresized. È più lento ma utilizza un algoritmo più sofisticato per determinare il colore di ogni pixel nella nuova immagine.

6

cambiare l'ultima riga a:

imagejpeg($tmp_img, $thumbFullPath, 100);

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

Inoltre, provare a utilizzare imagecopyresampled() piuttosto che imagecopyresized()

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

+1

Non ci sarà molta differenza tra 90 e 100. Inoltre, penso che sia più l'operazione di ridimensionamento che l'operazione di salvataggio che spreca il risultato. Inoltre, OP ha detto che cambiare la qualità non migliora nulla. – zneak

+0

giusto, ma può aiutare ... il 10% ... 'imagecopyresampled()' ha funzionato a meraviglia per me in passato. – jordanstephens

+1

d'accordo, "prova a usare imagecopyresampled() piuttosto che imagecopyresized()" –

Problemi correlati