• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 469
  • Last Modified:

Resizing images with PHP - loss of quality?

Hi, I'm using this code to resize images in 'main' directory and place them in 'tumb' directoy:

<?
$new_w = 200;
$cfg_fullsizepics_path = "main";
$cfg_thumb_path = "thumb";
$filepath = "main";
$dir = dir($filepath);
while($entry=$dir->read()) {
    if($entry == "." || $entry == "..") {
        continue;
    }
    $fp = @fopen("$filepath/$entry","r");
 $photo_filename = "$entry";
$image_stats = GetImageSize($cfg_fullsizepics_path."/".$entry);
$imagewidth = $image_stats[0];
$imageheight = $image_stats[1];
$img_type = $image_stats[2];
$ratio = ($imagewidth / $new_w);
$new_h = round($imageheight / $ratio);
if (!file_exists($cfg_thumb_path."/".$entry))  {
 if ($img_type=="2") {
 $src_img = imagecreatefromjpeg($cfg_fullsizepics_path."/".$entry);
 $dst_img = imagecreate($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));
imagejpeg($dst_img, "$cfg_thumb_path"."/$entry");
 } elseif  ($img_type=="3") {
 $dst_img=ImageCreate($new_w,$new_h);
 $src_img=ImageCreateFrompng($cfg_fullsizepics_path."/".$entry);
ImageCopyResized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,ImageSX($src_img),ImageSY($src_img));
 Imagepng($dst_img, "$cfg_thumb_path"."/$entry");
 } elseif  ($img_type=="1") {
 $cfg_thumb_url=$cfg_fullsizepics_url;
 }
}
  echo "$entry";
  echo "
";
  }
?>

It works well, BUT the images that are resized come out with what looks like 256 colours with a blue tint. Can anyone tell me how to resize images but preserver the colour quality in php?

BTW, I can't use GD library as i don't have permissions to install it :(
thanks.
0
spikeyjames
Asked:
spikeyjames
  • 3
1 Solution
 
RoonaanCommented:
change imagecreate() into imagecreatetruecolor()

See also: http://www.php.net/imagecreate
> We recommend the use of imagecreatetruecolor().

Regards

-r-
0
 
RoonaanCommented:
>BTW, I can't use GD library as i don't have permissions to install it :(

You ARE using GD lib, aren't you? Even imagecreate is a GD function. to my knowledge at least.

Regards

-r-
0
 
spikeyjamesAuthor Commented:
Thanks very much!!!
Such a simple solution! sigh.

I'm not sure if i'm using GD lib?...maybe my hosts have it installed after all...how do I check?
0
 
RoonaanCommented:
php_info (or was it phpinfo()?)

At least, one of the two shows info on what modules are installed at your server.

<?php phpinfo(); ?>

Regards

-r-
0

Featured Post

Become an Android App Developer

Ready to kick start your career in 2018? Learn how to build an Android app in January’s Course of the Month and open the door to new opportunities.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now