Bug #15549 Updated: only incomplet output
| From: | michael at famberg dot net | Date: | Thu, 14 Feb 2002 10:25:22 +0000 |
| Subject: | Bug #15549 Updated: only incomplet output | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-301@lists.php.net to get a copy of this message | ||
ID: 15549
Updated by: michael@famberg.net
Reported By: michael@famberg.net
Status: Open
Bug Type: GD related
Operating System: Windows XP with apache
PHP Version: 4.0.6
New Comment:
The gd version is 2.0 or higher(phpinfo);
and the php version is 4.0.6
Previous Comments:
------------------------------------------------------------------------
[2002-02-14 05:12:12] michael@famberg.net
I have written a script which sample a resized image and create a
copyrightstring on it. Then it should output the result on display. In
most of times its makes wonderfull, but sometimes its output incomplet
or empty images. Its happends every 10 times of try to load an image.
Here is the complete script:
function display_resized_image( $image, $newimage_extension,
$newimage_height,$newimage_width,$quality=80,$tmpimagetype="image/jpeg")
{
$image_size=getimagesize($image);
$image_width=$image_size[0];
$image_height=$image_size[1];
//### get image
$pathexploted=pathinfo($image);
$image_extension=$pathexploted["extension"];
if ($image_extension=="jpg" || $image_extension=="png" ||
$image_extension=="tmp")
{
if ($image_extension=="jpg")
{
$image_extension="jpeg";
}
if ($image_extension=="tmp")
{
$tmptype=explode("/",$tmpimagetype);
if ($tmptype[0]=="image")
{
switch($tmptype[1])
{
case "jpeg":
$image_extension="jpeg";
break;
case "jpg":
$image_extension="jpeg";
break;
case "png":
$image_extension="png";
break;
}
}
else
{
return -11;
}
}
$function="imagecreatefrom" . $image_extension;
$image = $function($image);
}
else
{
return -12;
}
//### calculate new size
if ($newimage_height==-1 && $newimage_width==-1)
{
$newimage_height=$image_height;
$newimage_width=$image_width;
}
else
{
if ($newimage_width==-1)
{
$newimage_width=($image_width*$newimage_height)/$image_height;
}
if ($newimage_height==-1)
{
$newimage_height=($image_height*$newimage_width)/$image_width;
}
}
//### create buffer image and sample resized image
$buffer = imagecreatetruecolor($newimage_width,$newimage_height);
imagecopyresampled($buffer,$image,0,0,0,0,$newimage_width
,$newimage_height,$image_width,$image_height);
if ($newimage_width>=250)
{
//### Copyrightbild erstellen
$cpbuffer = imagecreatetruecolor(300,30);
imagestring ($cpbuffer, 5, 45, 8, "(C)2002 www.shopforkids.de",
imagecolorexact($cpbuffer, 255, 255, 255));
//### alising line
$linebuffer = imagecreatetruecolor(300,2);
//### Copyrightbild einblenden
imagecopymerge($buffer,$cpbuffer,$newimage_width-300,$newimage_height-30,0,0,300,30,40);
imagecopymerge($buffer,$linebuffer,$newimage_width-300,$newimage_height-32,0,0,300,2,20);
}
//### shows images
if ($newimage_extension=="jpg" || $newimage_extension=="png" ||
$newimage_extension=="jpeg")
{
if ($newimage_extension=="jpg")
{
$newimage_extension="jpeg";
}
Header("Content-type: image/" . $newimage_extension);
$function="image" . $newimage_extension;
//$function="imagepng";
if ($function=="imagejpeg")
{
$function($buffer,"",$quality);
}
else
{
$function($buffer);
}
}
else
{
return -21;
}
imagedestroy($buffer);
imagedestroy($cpbuffer);
imagedestroy($linebuffer);
}
Im sorry for my bad english.
Michael Berg
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=15549&edit=1