Image Upload With Resize
Create following directory structure
ImageResize (foldername)
ImageUploadWithResize.php
delete_all_images.php
uploads (foldername add 777
permission to this folder)
ImageUploadWithResize.php
<?php
//Define Memory Limit for large
images so that we do not get "Allowed memory exhausted"
ini_set("memory_limit",
"200000000");
// upload the file
if
((isset($_POST["submitted_form"])) &&
($_POST["submitted_form"] == "image_upload_form")) {
//
file needs to be jpg,gif,bmp,x-png and 4 MB max
if
(($_FILES["image_upload_box"]["type"] ==
"image/jpeg" ||
$_FILES["image_upload_box"]["type"] ==
"image/pjpeg" ||
$_FILES["image_upload_box"]["type"] == "image/gif"
|| $_FILES["image_upload_box"]["type"] ==
"image/x-png") &&
($_FILES["image_upload_box"]["size"] < 4000000))
{
//
some settings
$max_upload_width
= 2592; $max_upload_height = 1944;
//
if user chosed properly then scale down the image according to user preferances
if(isset($_REQUEST['max_width_box'])
and $_REQUEST['max_width_box']!='' and
$_REQUEST['max_width_box']<=$max_upload_width){
$max_upload_width
= $_REQUEST['max_width_box'];
}
if(isset($_REQUEST['max_height_box'])
and $_REQUEST['max_height_box']!='' and
$_REQUEST['max_height_box']<=$max_upload_height){
$max_upload_height
= $_REQUEST['max_height_box'];
}
//
if uploaded image was JPG/JPEG
if($_FILES["image_upload_box"]["type"]
== "image/jpeg" ||
$_FILES["image_upload_box"]["type"] ==
"image/pjpeg")
{
$image_source
=
imagecreatefromjpeg($_FILES["image_upload_box"]["tmp_name"]);
}
//
if uploaded image was GIF
if($_FILES["image_upload_box"]["type"]
== "image/gif"){
$image_source
=
imagecreatefromgif($_FILES["image_upload_box"]["tmp_name"]);
}
//
BMP doesn't seem to be supported so remove it form above image type test
(reject bmps)
//
if uploaded image was BMP
if($_FILES["image_upload_box"]["type"]
== "image/bmp"){
$image_source
=
imagecreatefromwbmp($_FILES["image_upload_box"]["tmp_name"]);
}
//
if uploaded image was PNG
if($_FILES["image_upload_box"]["type"]
== "image/x-png"){
$image_source
= imagecreatefrompng($_FILES["image_upload_box"]["tmp_name"]);
}
$remote_file
= "uploads/".$_FILES["image_upload_box"]["name"];
imagejpeg($image_source,$remote_file,100);
chmod($remote_file,0644);
//
get width and height of original image
list($image_width,
$image_height) = getimagesize($remote_file);
if($image_width>$max_upload_width
|| $image_height >$max_upload_height){
$proportions
= $image_width/$image_height;
if($image_width>$image_height){
$new_width
= $max_upload_width;
$new_height
= round($max_upload_width/$proportions);
}
else{
$new_height
= $max_upload_height;
$new_width
= round($max_upload_height*$proportions);
}
$new_image
= imagecreatetruecolor($new_width , $new_height);
$image_source
= imagecreatefromjpeg($remote_file);
imagecopyresampled($new_image,
$image_source, 0, 0, 0, 0, $new_width, $new_height, $image_width,
$image_height);
imagejpeg($new_image,$remote_file,100);
imagedestroy($new_image);
}
imagedestroy($image_source);
header("Location:
ImageUploadWithResize.php?upload_message=image
uploaded&upload_message_type=success&show_image=".$_FILES["image_upload_box"]["name"]);
exit;
}
else{
header("Location:
ImageUploadWithResize.php?upload_message=make sure the file is jpg, gif or png
and that is smaller than 4MB&upload_message_type=error");
exit;
}
}
?>
<html>
<head><title>Image
Upload with resize</title>
<style
type="text/css">
<!--
.upload_message_success
{padding:4px;background-color:#009900;border:1px solid
#006600;color:#FFFFFF;margin-top:10px;margin-bottom:10px;}
.upload_message_error
{padding:4px;background-color:#CE0000;border:1px solid
#990000;color:#FFFFFF;margin-top:10px;margin-bottom:10px;}
-->
</style></head>
<body>
<h1 style="margin-bottom:
0px">Upload an image</h1>
<?php
if(isset($_REQUEST['upload_message'])){?>
<div
class="upload_message_<?php echo
$_REQUEST['upload_message_type'];?>">
<?php
echo htmlentities($_REQUEST['upload_message']);?>
</div>
<?php }?>
<form action="#"
method="post" enctype="multipart/form-data"
name="image_upload_form" id="image_upload_form"
style="margin-bottom:0px;">
<label>Image
file, maximum 4MB. it can be jpg, gif,
png:</label><br />
<input name="image_upload_box" type="file"
id="image_upload_box" size="40" />
<input type="submit" name="submit"
value="Upload image" /><br /><br />
<label>Scale
down image? (2592 x 1944 px max):</label><br />
<input
name="max_width_box" type="text" id="max_width_box"
value="1024" size="4"> x
<input
name="max_height_box" type="text"
id="max_height_box" value="768" size="4"> px.
<br /><br />
<p
style="padding:5px; border:1px solid #EBEBEB;
background-color:#FAFAFA;">
<strong>Notes:</strong><br
/>
The
image will not be resized to this exact size; it will be scalled down so that
neider width or height is larger than specified.<br />
After
you uploaded images and made tests on our server please <a
href="delete_all_images.php">delete all uploaded images </a>
:)<br />
</p>
<input
name="submitted_form" type="hidden"
id="submitted_form" value="image_upload_form" />
</form>
<?php if(isset($_REQUEST['show_image'])
and $_REQUEST['show_image']!=''){?>
<p><img
src="uploads/<?php echo $_REQUEST['show_image'];?>"
/></p>
<?php }?>
</body>
</html>
delete_all_images.php
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
<title>Delete all images</title>
</head>
<body>
<?
$dir = 'uploads/';
// open specified
directory
$dirHandle =
opendir($dir);
$total_deleted_images = 0;
while ($file =
readdir($dirHandle)) {
// if not a
subdirectory and if filename contains the string '.jpg'
if(!is_dir($file)) {
// update
count and string of files to be returned
unlink($dir.$file);
echo 'Deleted
file <b>'.$file.'</b><br />';
$total_deleted_images++;
}
}
closedir($dirHandle);
if($total_deleted_images=='0'){
echo
'There ware no files uploaded there.';
}
echo
'<br />Thank you.';
echo
'<br /><a href="ImageUploadWithResize.php"
title="Upload Image"> Upload New Image </a>';
?>
</body>
</html>
No comments:
Post a Comment