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,566
  • 16
  • 26
  • 32
DevManX
  • 476
  • 3
  • 14
  • possible duplicate of [php resize image](http://stackoverflow.com/questions/2527567/php-resize-image) –  Apr 15 '15 at 00:35
  • I think this is already answered here: http://stackoverflow.com/questions/6128716/jquery-resize-image-before-saving – brianc Apr 15 '15 at 00: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. – DevManX Apr 15 '15 at 00:41
  • Here is a simple class that will reduce and crop and save to disk:http://stackoverflow.com/questions/28002244/crop-resize-image-function-using-gd-library/28008400#28008400 – Rasclatt Apr 15 '15 at 01:43

1 Answers1

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");

}
Misunderstood
  • 5,534
  • 1
  • 18
  • 25