We’re going to write a function called image_handler in PHP. We’ll provide parameters to specify the image width, height, whether or not to watermark the image, and the source of the watermark, when the function is called. We’ll supply a few default values for these parameters as well.
<?php function image_handler($source_image,$destination,$tn_w = 100,$tn_h = 100,$quality = 80,$wmsource = false) { #find out what type of image this is $info = getimagesize($source_image); $imgtype = image_type_to_mime_type($info[2]); #assuming the mime type is correct switch ($imgtype) { case 'image/jpeg': $source = imagecreatefromjpeg($source_image); break; case 'image/gif': $source = imagecreatefromgif($source_image); break; case 'image/png': $source = imagecreatefrompng($source_image); break; default: die('Invalid image type.'); } #Figure out the dimensions of the image and the dimensions of the desired thumbnail $src_w = imagesx($source); $src_h = imagesy($source); $src_ratio = $src_w/$src_h; #Do some math to figure out which way we'll need to crop the image #to get it proportional to the new size, then crop or adjust as needed if ($tn_w/$tn_h > $src_ratio) { $new_h = $tn_w/$src_ratio; $new_w = $tn_w; } else { $new_w = $tn_h*$src_ratio; $new_h = $tn_h; } $x_mid = $new_w/2; $y_mid = $new_h/2; $newpic = imagecreatetruecolor(round($new_w), round($new_h)); imagecopyresampled($newpic, $source, 0, 0, 0, 0, $new_w, $new_h, $src_w, $src_h); $final = imagecreatetruecolor($tn_w, $tn_h); imagecopyresampled($final, $newpic, 0, 0, ($x_mid-($tn_w/2)), ($y_mid-($tn_h/2)), $tn_w, $tn_h, $tn_w, $tn_h); #if we need to add a watermark if($wmsource) { #find out what type of image the watermark is $info = getimagesize($wmsource); $imgtype = image_type_to_mime_type($info[2]); #assuming the mime type is correct switch ($imgtype) { case 'image/jpeg': $watermark = imagecreatefromjpeg($wmsource); break; case 'image/gif': $watermark = imagecreatefromgif($wmsource); break; case 'image/png': $watermark = imagecreatefrompng($wmsource); break; default: die('Invalid watermark type.'); } #if we're adding a watermark, figure out the size of the watermark #and then place the watermark image on the bottom right of the image $wm_w = imagesx($watermark); $wm_h = imagesy($watermark); imagecopy($final, $watermark, $tn_w - $wm_w, $tn_h - $wm_h, 0, 0, $tn_w, $tn_h); } if(Imagejpeg($final,$destination,$quality)) { return true; } return false; } ?>
Now we’ll write a small form for uploading the images we want to handle with this function.
<form method="post" enctype="multipart/form-data"> Source Image: <input type="file" name="uploaded_image" /> <input type="submit" value="Handle This Image" /> </form>
And finally, the uploaded image processing, setting parameters, and a small success/failure message. Make sure the destination path is writable!
if($_FILES) { $source_image = $_FILES['uploaded_image']['tmp_name']; $destination = '/path/to/the/final/image/filename.jpg'; $tn_w = 400; $tn_h = 400; $quality = 100; $wmsource = '/path/to/your/watermark/image.png'; $success = image_handler($source_image,$destination,$tn_w,$tn_h,$quality,$wmsource); if($success) { echo "Your image was saved successfully!"; } else { echo "Your image was not saved."; } }
This content was stolen. Please remove this post.