2010-06-19 12 views
5

Estoy cargando imágenes en un sitio web y cambiando las imágenes a miniaturas que se ajustan a un cuadrado blanco de 100 x 100. el problema es que las imágenes parecen no anti-alias correctamente. las imágenes del photoshop se ven suaves, pero se ven crujientes, como súper afiladas.php imagejpeg calidad apesta: ¿por qué?

eche un vistazo a these samples, mostrando el tamaño completo a la izquierda y las miniaturas a la derecha (ver al 100%). la foto sale ridículamente afilada, pero a mucha gente no le molestará. el dibujo, sin embargo, es inaceptable. esas líneas curvas simplemente no se vuelven anti-alias y se convierten en líneas punteadas.

im utilizando imagejpg(), y la calidad de jpg que elijo no tiene ningún efecto sobre el crujido. Aquí está el código que lo rodea:

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

¿Alguna idea? ¿esto es normal? ¡Gracias!

Respuesta

15

es posible que desee probar imagecopyresampled en lugar de imagecopyresized. Es más lento pero usa un algoritmo más sofisticado para determinar el color de cada píxel en la nueva imagen.

6

cambio de la última línea a:

imagejpeg($tmp_img, $thumbFullPath, 100);

véase: http://us4.php.net/manual/en/function.imagejpeg.php

También, trate de usar imagecopyresampled() en lugar de imagecopyresized()

véase: http://us4.php.net/manual/en/function.imagecopyresampled.php

+1

No habrá mucha diferencia entre 90 y 100. Además, creo que es más la operación de escalado que la operación de guardar lo que desperdicia el resultado. Además, OP dijo que cambiar la calidad no mejora nada. – zneak

+0

bien, pero puede ayudar ... 10% ... 'imagecopyresampled()' me ha funcionado de maravillas en el pasado. – jordanstephens

+1

de acuerdo, "intente usar imagecopyresampled() en lugar de imagecopyresized()" –

Cuestiones relacionadas