owen
owen

Reputation: 63

php imagejpeg quality stinks: why?

im taking image uploads on a website and changing the images to thumbnails that fit onto a 100 x 100 white square. the problem is that the images look like they dont anti-alias properly. images sized down in photoshop look smooth, but these look crunchy, like super sharpened.

take a look at these samples, showing full size on the left and thumbnails on the right (view at 100%). the photo comes out looking ridiculously sharpened, but a lot of people might not be bothered by it. the drawing though is waaay unacceptable. those curved lines just dont anti-alias at all and become dotted lines.

im using imagejpg(), and the jpg quality i choose has no effect on the crunchiness. heres some of the code surrounding it:

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

any ideas? is this normal? thanks!

Upvotes: 6

Views: 12446

Answers (3)

Bira
Bira

Reputation: 5506

$imagepath = /path/to/image.jpg; 
$image = imagecreatefromjpeg($imagepath); 
header('Content-Type: image/jpeg'); 
imagejpeg($image, NULL, 100); 

Last line is so important!

Upvotes: 0

Kris
Kris

Reputation: 41827

You may want to try imagecopyresampled instead of imagecopyresized. It's slower but uses a more sophisticated algorithm for determining the colour of every pixel in the new image.

Upvotes: 14

bimbom22
bimbom22

Reputation: 4510

change the last line to:

imagejpeg( $tmp_img, $thumbFullPath, 100 );

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

Also, try using imagecopyresampled() rather than imagecopyresized()

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

Upvotes: 6

Related Questions