RE: [PHP] GD lib. image quality!

From: Date: Sun, 25 Aug 2002 19:02:01 +0000
Subject: RE: [PHP] GD lib. image quality!
Groups: php.general 
Request: Send a blank email to php-general+get-114070@lists.php.net to get a copy of this message
If you have GD2 I'd advise using imagecopyresampled, as I found using imagecopyresized often resulted in blue or grayish images, while imagecopyresampled resulted in normal looking images. Jason Reid jason@achost.ca -- AC Host Canada www.achost.ca ----- Original Message ----- From: "Dave at Sinewaves.net" <eightrack@earthlink.net> To: "Arcadius A." <ahouans@sh.cvut.cz>; <php-general@lists.php.net> Sent: Sunday, August 25, 2002 12:23 PM Subject: RE: [PHP] GD lib. image quality! > imageCreate will create an image, but its palette will be very limited, so > when you try to copy your photo onto it, it will maintain the palette of the > original picture. Obviously, this is not what you want, since the picture > comes out looking all grey and faded (probably 8-16 colors!). > > What works for me is creating a blank image using imageCreate(), then saving > it as a temporary jpeg (using imageJpeg). This action will set the palette > of the image to a jpeg's palette (close to 16-bit or better colorspace). If > you imageCopyResized over this temp.jpg (which you need to create whenever > you run the script to ensure sizing is perfect), it will come out with the > full palette of colors. > > Pseudo code: > <? > $dest_h = whatever your calculated destination height is; > $dest_w = whatever your calculated destination width is; > > $src_h = height of original image; > $src_w = width of original image; > > // create the blank limited-palette image > $base_image = imageCreate($dest_w, $dest_h); > > // convert and save it to temp.jpg > imagejpeg($base_image, 'path/to/temp.jpg'); > > // get the image pointer to the temp jpeg > $image = imageCreateFromJpeg('path/to/temp.jpg'); > > // get the image pointer to the original image > $imageToResize = imageCreateFromJpeg('path/to/image_to_be_resized.jpg'); > > // resize the original image over temp.jpg > // since you have GD2, you could also use imageCopyResampled > imageCopyResized($image, $imageToResize, 0, 0, 0, 0, $dest_w, $dest_h, > $src_w, $src_h); > > // values for output jpeg quality > $jpegQuality = 75; > > // create the resized image > imageJpeg($image, 'path/to/thumbnail_name.jpg', $jpegQuality); > ?> > > > Then all you have to do is a little cleanup with imageDestroy() and you > should have a nice looking thumbnail! > > > I usually add a line like this to the script to make sure everything went > smoothly: > <? > echo '<html><head><title>Thumbnail Generator</title>' > .'</head><body><img > src="path/to/thumbnail_name.jpg">' > .'</body></html>'; > ?> > > It lets me see the quality of the thumbnail the second the script completes. > > > Try it - you'll get perfect thumbnails every time. I used this technique > for all of the pictures at www.arkestraclandestina.com with GD1.6 - and all > of them actually had custom color profiles! Works like a charm. > > I like this method because I can be sure that the script won't break on > sites with older PHP and GD versions - which is an important consideration > when you're deploying applications to other sites... > > However! If you are sure it will only be run on a PHP4, GD2 system, you can > avoid all of the temp jpg madness altogether by just altering your code to > use imageCreateTrueColor() instead of imageCreate()!! ;P Easy as pie! > > Dave > > > > -----Original Message----- > From: Arcadius A. [mailto:ahouans@sh.cvut.cz] > Sent: Sunday, August 25, 2002 4:11 AM > To: php-general@lists.php.net > Subject: [PHP] GD lib. image quality! > > > Hello! > I wrote a little script for generation thumbnails of larger images.... > <code> > $origImage = imageCreateFromJpeg($sourcePath."/".$currentImageName); > $thumbnail = imageCreate($thumbWidth,$thumbHeight);// create empty image > > imageCopyResized($thumbnail,$origImage,0,0,0,0,$thumbWidth,$thumbHeight,imag > esX($origImage),imagesY($origImage)); > imageJpeg($thumbnail, $targetPath."/".$thumbNamePrefix."_thumb.jpg"); // > Store it > imageDestroy($thumbnail); // cleanup > echo "<br>Image > ".$targetPath."/".$thumbNamePrefix."_thumb.jpg"." > created successfully!"; > > </code> > > then, I've noticed that the quality of the thumbnails created is very bad! > my "phpinfo()" page shows "2.0 or higher" as GD version > > So, I'm wondering whether I'm doing something wrong in my code or whether > there exist a better library to use with PHP ... a library able to generate > good quality JPG files... > > Thanks in advance. > > Arcadius. > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php

« previous php.general (#114070) next »