0

I was looking for simple script for uploading images. I found an interesting one, but I don't know how to modify it to resize the image before upload.

Here is the PHP code:

if (isset($_POST['submit'])) {
 $validextensions = array("jpeg", "jpg", "png");
 $temporary = explode(".", $_FILES["file"]["name"]);
 $file_extension = end($temporary);
 if ((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/jpeg")) && ($_FILES["file"]["size"] < 100000)//Approx. 100kb files can be uploaded.
 && in_array($file_extension, $validextensions)) {
 if ($_FILES["file"]["error"] > 0) {
 echo "Return Code: " . $_FILES["file"]["error"] . "<br/><br/>";
 } else {
 echo "<span>Your File Uploaded Succesfully...!!</span><br/>";
 echo "<br/><b>File Name:</b> " . $_FILES["file"]["name"] . "<br>";
 echo "<b>Type:</b> " . $_FILES["file"]["type"] . "<br>";
 echo "<b>Size:</b> " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
 echo "<b>Temp file:</b> " . $_FILES["file"]["tmp_name"] . "<br>";
 if (file_exists("upload/" . $_FILES["file"]["name"])) {
 echo $_FILES["file"]["name"] . " <b>already exists.</b> ";
 } else {
 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"] ["name"]);
 echo "<b>Stored in:</b> " . "upload/" . $_FILES["file"]["name"];
 }
 }
 } else {
 echo "<span>***Invalid file Size or Type***<span>";
 }
}
chiwangc
3,58716 gold badges28 silver badges32 bronze badges
asked Apr 15, 2015 at 0:33
4
  • possible duplicate of php resize image Commented Apr 15, 2015 at 0:35
  • I think this is already answered here: stackoverflow.com/questions/6128716/… Commented Apr 15, 2015 at 0:37
  • I tried many answers regarding this topic, but I couldn't implement them on this code. I am new in this topic, so I hope to find a direct answer regarding this specific problem/code. Thank you. Commented Apr 15, 2015 at 0:41
  • Here is a simple class that will reduce and crop and save to disk:stackoverflow.com/questions/28002244/… Commented Apr 15, 2015 at 1:43

1 Answer 1

0

This is a very robust routine.

It resizes, creates, preview size, and creates a thumbnail

Also chooses best best pic type and saves big and thumbnail as a base64 <img>

$thumbWidth = 60;
$thumbHeight = 60;
$previewWidth = 80;
$previewHeight = 60;
$bigWidth = 320;
$bigHeight = 240;
if( is_uploaded_file($_FILES['image1']['tmp_name']) || !($_FILES['image1']['error'] !== UPLOAD_ERR_OK)){
 $save = false;
 $jspan = '';
 $gspan = '';
 $pspan = '';
 switch(strtolower($_FILES['image1']['type'])){
 case 'image/jpeg':
 $image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 case 'image/png':
 $image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 case 'image/gif':
 $image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 default:
 $img = @getimagesize($_FILES['image1']['tmp_name']);
 switch(strtolower($img['mime'])){
 case 'image/jpeg':
 $image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 case 'image/png':
 $image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 case 'image/gif':
 $image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 default:
 $filename = $_FILES['image1']['name'];
 $ext = substr($filename,-3);
 switch(strtolower($ext)){
 case 'jpg':
 $image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 case 'gif':
 $image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 case 'png':
 $image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 default:
 $image = @imagecreatefromjpeg($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 $image = @imagecreatefrompng($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 $image = @imagecreatefromgif($_FILES['image1']['tmp_name']);
 if ($image !== false){$save = true;break;}
 }
 }
 }
}
 if ($save === true){
 $originalWidth = imagesx($image);
 $originalHeight = imagesy($image);
 $scale = min($previewWidth/$originalWidth, $previewHeight/$originalHeight);
 $newWidth = ceil($scale*$originalWidth);
 $newHeight = ceil($scale*$originalHeight);
 $newPic = imagecreatetruecolor($newWidth, $newHeight);
 imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
 ob_start();
 imagejpeg($newPic, NULL, 70);
 $jpg = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $jLen = strlen($jpg);
 ob_start();
 imagepng($newPic, NULL, 9);
 $png = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $pLen = strlen($png);
 ob_start();
 imagegif($newPic);
 $gif = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $gLen = strlen($gif);
 if ($gLen < $jLen){
 if ($pLen < $gLen){
 $raw = $png;
 $png = null;
 $type = 'png';
 $pspan = '<span class="size">';
 }
 else{
 $raw = $gif;
 $gif = null;
 $type = 'gif';
 $gspan = '<span class="size">';
 }
 }
 elseif($pLen < $jLen){
 $raw = $png;
 $png = null;
 $type = 'png';
 $pspan = '<span class="size">';
 }
 else{
 $raw = $jpg;
 $jpg = null;
 $type = 'jpg';
 $jspan = '<span class="size">';
 }
 $base64 = base64_encode($raw);
 $thumb1 = "#thumb1{background-image:url('data:image/$type;base64,$base64')}";
 $size = 'Thumb';
 echo "<p>Image $num $size <br>$jspan jpg: $jLen bytes</span>, <br>$gspan gif: $gLen bytes</span>, <br>$pspan png: $pLen bytes</span></p> $thumb1"; 
 $filename = 'thumb1.' . $type;
 $fp = fopen($filename ,"w");
 fwrite($fp, $raw);
 fclose($fp);
 imagedestroy($newPic);
 $filename = "thumb1_$type.html";
 $fp = fopen($filename ,"w");
 fwrite($fp, $thumb1);
 fclose($fp);
 $thumb1 = mysql_escape_string($thumb1);
 @mysql_unbuffered_query("UPDATE `photos` SET `thumb1`='$thumb1' WHERE `id`=$id");
 $scale = min($bigWidth/$originalWidth, $bigHeight/$originalHeight);
 $newWidth = ceil($scale*$originalWidth);
 $newHeight = ceil($scale*$originalHeight);
 $newPic = imagecreatetruecolor($newWidth, $newHeight);
 imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
 ob_start();
 imagejpeg($newPic, NULL, 70);
 $jpg = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $jLen = strlen($jpg);
 ob_start();
 imagepng($newPic, NULL, 9);
 $png = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $pLen = strlen($png);
 ob_start();
 imagegif($newPic);
 $gif = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $gLen = strlen($gif);
 if ($gLen < $jLen){
 if ($pLen < $gLen){
 $raw = $png;
 $png = null;
 $type = 'png';
 $pspan = '<span class="size">';
 }
 else{
 $raw = $gif;
 $gif = null;
 $type = 'gif';
 $gspan = '<span class="size">';
 }
 }
 elseif($pLen < $jLen){
 $raw = $png;
 $png = null;
 $type = 'png';
 $pspan = '<span class="size">';
 }
 else{
 $raw = $jpg;
 $jpg = null;
 $type = 'jpg';
 $jspan = '<span class="size">';
 }
 $base64 = base64_encode($raw);
 $size = 'Full Size';
 $filename = 'big1.' . $type;
 $big1 = "<img width=\"$newWidth\" height=\"$newHeight\" src=\"data:image/$type;base64,$base64\" alt =\"profile photo one\"/>";
 echo "<p>Image $num $size <br>$jspan jpg: $jLen bytes</span>, <br>$gspan gif: $gLen bytes</span>, <br>$pspan png: $pLen bytes</span></p> $big1"; 
 $fp = fopen($filename ,"w");
 fwrite($fp, $raw);
 fclose($fp);
 imagedestroy($newPic);
 $filename = "big1_$type.html";
 $fp = fopen($filename ,"w");
 fwrite($fp, $big1);
 fclose($fp);
 $big1 = mysql_escape_string($big1);
 @mysql_unbuffered_query("UPDATE `photos` SET `big1`='$big1' WHERE `id`=$id");
 $scale = min($thumbWidth/$originalWidth, $thumbHeight/$originalHeight);
 $newWidth = ceil($scale*$originalWidth);
 $newHeight = ceil($scale*$originalHeight);
 $newPic = imagecreatetruecolor($newWidth, $newHeight);
 imagecopyresampled($newPic, $image,0, 0, 0, 0,$newWidth, $newHeight, $originalWidth, $originalHeight);
 ob_start();
 imagejpeg($newPic, NULL, 70);
 $jpg = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $jLen = strlen($jpg);
 ob_start();
 imagepng($newPic, NULL, 9);
 $png = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $pLen = strlen($png);
 ob_start();
 imagegif($newPic);
 $gif = ob_get_clean();
 ob_clean();
 ob_end_flush();
 $gLen = strlen($gif);
 if ($gLen < $jLen){
 if ($pLen < $gLen){
 $raw = $png;
 $png = null;
 $type = 'png';
 }
 else{
 $raw = $gif;
 $gif = null;
 $type = 'gif';
 }
 }
 elseif($pLen < $jLen){
 $raw = $png;
 $png = null;
 $type = 'png';
 }
 else{
 $raw = $jpg;
 $jpg = null;
 $type = 'jpg';
 }
 $base64 = base64_encode($raw);
 $size = 'Small Thumb';
 $filename = 'smallThumb.' . $type;
 $smallThumb = "#t$id{margin:0;display:inline-block;width:60px;height:60px;border:0;background-image: background-image:url('data:image/gif;base64,$base64');}";
 echo '<div style="height:60px;width:60px;background-repeat: no-repeat;background-image:background-image:url(' . "'data:image/gif;base64,$base64');\" ></div>\n";
 echo "<br/><p>Image $num $size <br/>jpg: $jLen bytes<br>gif: $gLen bytes<br/>png: $pLen bytes</p> "; 
 $fp = fopen($filename ,"w");
 fwrite($fp, $raw);
 fclose($fp);
 imagedestroy($image);
 imagedestroy($newPic);
 $filename = "smallThumb$type.html";
 $fp = fopen($filename ,"w");
 fwrite($fp,'<!DOCTYPE html><html lang="en"><head><style>' . $smallThumb . '</style></head><body><div id="t9542058256"></div></body></html>');
 fclose($fp);
 $smallThumb = mysql_escape_string($smallThumb);
 @mysql_unbuffered_query("UPDATE `photos` SET `SmallThumb`='$smallThumb' WHERE `id`=$id");
}
answered Apr 15, 2015 at 0:47
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.