From:             [EMAIL PROTECTED]
Operating system: Windows XP with apache
PHP version:      4.0.6
PHP Bug Type:     GD related
Bug description:  only incomplet output

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 bug report at http://bugs.php.net/?id=15549&edit=1
-- 
Fixed in CVS:        http://bugs.php.net/fix.php?id=15549&r=fixedcvs
Fixed in release:    http://bugs.php.net/fix.php?id=15549&r=alreadyfixed
Need backtrace:      http://bugs.php.net/fix.php?id=15549&r=needtrace
Try newer version:   http://bugs.php.net/fix.php?id=15549&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=15549&r=support
Expected behavior:   http://bugs.php.net/fix.php?id=15549&r=notwrong
Not enough info:     http://bugs.php.net/fix.php?id=15549&r=notenoughinfo
Submitted twice:     http://bugs.php.net/fix.php?id=15549&r=submittedtwice

Reply via email to