RE: [PHP] GD lib. image quality!

2002-08-25 Thread Rasmus Lerdorf

imagecopyresize() just skips pixels in order to reduce it in size.
imagecopyresampled() will take the average of adjacent pixels and
therefore produce a much better scaled down image.

-Rasmus

On Sun, 25 Aug 2002, Jason Reid wrote:

> 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
> [EMAIL PROTECTED]
> --
> AC Host Canada
> www.achost.ca
>
> - Original Message -
> From: "Dave at Sinewaves.net" <[EMAIL PROTECTED]>
> To: "Arcadius A." <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
> 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 'Thumbnail Generator'
> > .''
> > .'';
> > ?>
> >
> > 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:[EMAIL PROTECTED]]
> > Sent: Sunday, August 25, 2002 4:11 AM
> > To: [EMAIL PROTECTED]
> > Subject: [PHP] GD lib. image quality!
> >
> >
> > Hello!
> > I wrote a little script for generation thumbnails of larger images
> > 
> > $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

RE: [PHP] GD lib. image quality!

2002-08-25 Thread Jason Reid

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
[EMAIL PROTECTED]
--
AC Host Canada
www.achost.ca

- Original Message -
From: "Dave at Sinewaves.net" <[EMAIL PROTECTED]>
To: "Arcadius A." <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
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 'Thumbnail Generator'
> .''
> .'';
> ?>
>
> 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:[EMAIL PROTECTED]]
> Sent: Sunday, August 25, 2002 4:11 AM
> To: [EMAIL PROTECTED]
> Subject: [PHP] GD lib. image quality!
>
>
> Hello!
> I wrote a little script for generation thumbnails of larger images
> 
> $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 "Image ".$targetPath."/".$thumbNamePrefix."_thumb.jpg"."
> created successfully!";
>
> 
>
> 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





RE: [PHP] GD lib. image quality!

2002-08-25 Thread Dave at Sinewaves.net

 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:



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:
Thumbnail Generator'
.''
.'';
?>

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:[EMAIL PROTECTED]]
Sent: Sunday, August 25, 2002 4:11 AM
To: [EMAIL PROTECTED]
Subject: [PHP] GD lib. image quality!


Hello!
I wrote a little script for generation thumbnails of larger images

$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 "Image ".$targetPath."/".$thumbNamePrefix."_thumb.jpg"."
created successfully!";



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




[PHP] GD lib. image quality!

2002-08-25 Thread Arcadius A.

Hello!
I wrote a little script for generation thumbnails of larger images

$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 "Image ".$targetPath."/".$thumbNamePrefix."_thumb.jpg"."
created successfully!";



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