0

Hi i wrote a code for image upload and watermarking. It is working fine in Jpg but not in gif.... The code is

$ext = end(explode('.', $final_file));
if($ext == 'jpg'){
$ext_new = 'jpeg';
} elseif ($ext == 'JPG' || $ext == 'JPEG'){
$ext_new = 'jpeg';
}else {
$ext_new = $ext;
}

$po="imagecreatefrom".$ext_new;
//////////////////Resize///////////////

$finalfilename="share/".$final_file;
$src = $po($finalfilename);
list($width,$height)=getimagesize($finalfilename);
$newwidth=200;
$newheight=200;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "share/".$final_file;
imagejpg($tmp,$filename,100);
imagedestroy($src);
//unlink($final_file);
imagedestroy($tmp);
////////////////watermark///////////////////////////
$orgimage=$po($finalfilename); // your image
$watermark=imagecreatefrompng("logo.png");  //transparent watermark logo
// $watermark=imagecreatefromgif("yourlogo.gif");  
imagecopy($orgimage,$watermark,0,0,0,0,imagesx($watermark),imagesy($watermark));

imagejpeg($orgimage,$filename,100);
imagedestroy($watermark);
imagedestroy($orgimage);

The following error :

Warning: imagecreatefromgif() [function.imagecreatefromgif]: 'share/-yyyy-.gif' is not a valid GIF file in C:\wamp\www\water\process.php on line 98

Warning: imagecopy(): supplied argument is not a valid Image resource in C:\wamp\www\water\process.php on line 101

Warning: imagejpeg(): supplied argument is not a valid Image resource in C:\wamp\www\water\process.php on line 103

Warning: imagedestroy(): supplied argument is not a valid Image resource in C:\wamp\www\water\process.php on line 105

Please help me with the correction

5
Contributors
9
Replies
10
Views
7 Years
Discussion Span
Last Post by cwarn23
0

Not sure how you made it work even with a JPEG. I found a number of errors:
1. In one case you have used imagejpg instead of imagejpeg
2. You have a statement:

$src = $po($finalfilename);

which makes no sense to me. It seems that the source file should be referenced as $final_file:

$src = $po($final_file);

I had the original image in the same directory as the php module with the resulting file in a sub-directory called "share". That was how I interpreted what you did.

With those changes, it worked for me for a jpeg.

To make it work with a .gif, you need to get rid of the hard-coding for jpeg. I added a staement:

$c_create = "image".$ext_new;

and then I used $c_create in place of your imagejpeg as in:

$c_create($orgimage,$filename,100);

Having done all that, it worked for both jpeg and gif (and should work with anything else that PHP supports).

0

There are a few logical errors in your code like (chrishea) stated and got it working.
If it solved now mark as solved else Ive noted maybe a few directory problems but depends how you set it up.
Note: Ill comment where I think you should go try and debug

// Orginal file is $final_file
$ext = end(explode('.', $final_file));
if($ext == 'jpg'){
$ext_new = 'jpeg';
} elseif ($ext == 'JPG' || $ext == 'JPEG'){
$ext_new = 'jpeg';
}else {
$ext_new = $ext;
}

$po="imagecreatefrom".$ext_new;
//////////////////Resize///////////////
// Im abit confused but the directories look wrong/confusing
// $po, $finalfilename, $src
$finalfilename="share/".$final_file;
$src = $po($finalfilename);
list($width,$height)=getimagesize($finalfilename);
$newwidth=200;
$newheight=200;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "share/".$final_file;
imagejpg($tmp,$filename,100);
imagedestroy($src);
//unlink($final_file);
imagedestroy($tmp);
////////////////watermark///////////////////////////
$orgimage=$po($finalfilename); // your image
$watermark=imagecreatefrompng("logo.png");  //transparent watermark logo
// $watermark=imagecreatefromgif("yourlogo.gif");  
imagecopy($orgimage,$watermark,0,0,0,0,imagesx($watermark),imagesy($watermark));

imagejpeg($orgimage,$filename,100);
imagedestroy($watermark);
imagedestroy($orgimage);$ext = end(explode('.', $final_file));

I will a closer look later if time allows check that and get back to me.

0

In my opinion the first 9 lines are written poorly and should be replaced with the following:

// Orginal file is $final_file
$ext = end(explode('.', $final_file));
if(strtolower($ext) == 'jpg' || strtolower($ext) == 'jpeg'){
$ext_new = 'jpeg';
} elseif (strtolower($ext) == 'gif'){
$ext_new = 'gif';
} else {
die ('Invalid Extension.');
}

Perhaps it was the casing of the gif extension that messed it up.

0

Just for an update, what error messages are you getting for the most recent code and what is the most recent code your using?

0

working till the upload process. And no watermarking for gif file. No problem with JPEG/JPG
Thanks

code:

$ext = end(explode('.', $final_file));
if(strtolower($ext) == 'jpg' || strtolower($ext) == 'jpeg'){
$ext_new = 'jpeg';
} elseif (strtolower($ext) == 'gif'){
$ext_new = 'gif';
} else {
die ('Invalid Extension.');
}
$po="imagecreatefrom".$ext_new;
//////////////////Resize///////////////

$finalfilename="share/".$final_file;
$src = $po($finalfilename);
list($width,$height)=getimagesize($finalfilename);
$newwidth=200;
$newheight=200;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "share/".$final_file;
imagejpeg($tmp,$filename,100);
imagedestroy($src);
//unlink($final_file);
imagedestroy($tmp);



$orgimage=@$po("$finalfilename"); // your image
$watermark=@imagecreatefrompng("logo.png");  //transparent watermark logo
// $watermark=imagecreatefromgif("yourlogo.gif");  
@imagecopy($orgimage,$watermark,0,0,0,0,imagesx($watermark),imagesy($watermark));

$c_create = "image".$ext_new;

@$c_create($orgimage,$filename,100);
@imagedestroy($watermark);
@imagedestroy($orgimage);
0

Perhaps this code will help. I noticed that the imagecreatefromgif was trying to open a jpeg file.

$ext = end(explode('.', $final_file));
if(strtolower($ext) == 'jpg' || strtolower($ext) == 'jpeg'){
    $ext_new = 'jpeg';
    $imgsave='imagejpg';
    } elseif (strtolower($ext) == 'gif'){
    $ext_new = 'gif';
    $imgsave='imagegif';
    } else {
    die ('Invalid Extension.');
    }

$po="imagecreatefrom".$ext_new;
//////////////////Resize///////////////
// Im abit confused but the directories look wrong/confusing
// $po, $finalfilename, $src
$finalfilename="share/".$final_file;
$src = $po($finalfilename);
list($width,$height)=getimagesize($finalfilename);
$newwidth=200;
$newheight=200;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
$filename = "share/".$final_file;
if ($imagesave=='imagejpg') {
    $imagesave($tmp,$filename,100);
    } else {
    $imagesave($tmp,$filename);
    }
imagedestroy($src);
//unlink($final_file);
imagedestroy($tmp);
////////////////watermark///////////////////////////
$orgimage=$po($finalfilename); // your image
$watermark=imagecreatefrompng("logo.png");  //transparent watermark logo
// $watermark=imagecreatefromgif("yourlogo.gif");  
imagecopy($orgimage,$watermark,0,0,0,0,imagesx($watermark),imagesy($watermark));

imagejpeg($orgimage,$filename,100);
imagedestroy($watermark);
imagedestroy($orgimage);$ext = end(explode('.', $final_file));
This article has been dead for over six months. Start a new discussion instead.
Be sure to adhere to our posting rules.