phpimage-uploadingphpthumb

How to integrate php thumbnail creator with multiple image uploader script?


I have this code to upload multiple image. It is working fine.

<?php
include('db.php');
session_start();
$session_id='1'; //$session id
$path = "uploads/";

function getExtension($str) 
{

     $i = strrpos($str,".");
     if (!$i) { return ""; } 

     $l = strlen($str) - $i;
     $ext = substr($str,$i+1,$l);
     return $ext;
   }

$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
    {
        $name = $_FILES['photoimg']['name'];
        $size = $_FILES['photoimg']['size'];

        if(strlen($name))
            {
                 $ext = getExtension($name);
                if(in_array($ext,$valid_formats))
                {
                if($size<(1024*1024))
                    {
                         $inputFileName = $_FILES['photoimg']['name'];



                        $actual_image_name = time().substr(str_replace(" ", "_", $ext), 5).".".$ext;
                        $tmp = $_FILES['photoimg']['tmp_name'];
                        if(move_uploaded_file($tmp, $path.$actual_image_name))
                            {
                            mysql_query("UPDATE users SET profile_image='$actual_image_name' WHERE uid='$session_id'");

                                echo "<img src='uploads/".$actual_image_name."'  class='preview'>";
                            }
                        else
                            echo "Fail upload folder with read access.";
                    }
                    else
                    echo "Image file size max 1 MB";                    
                    }
                    else
                    echo "Invalid file format..";   
            }

        else
            echo "Please select image..!";

        exit;
    }
  ?>

But I want to create thumbnail for per image. To do this I have another one. I have found it from a website...but I can't understand how to integrate with my original one.

  function thumbnail($inputFileName, $maxSize = 100)
 {
 $info = getimagesize($inputFileName);

 $type = isset($info['type']) ? $info['type'] : $info[2];

 // Check support of file type
 if ( !(imagetypes() & $type) )
 {
 // Server does not support file type
 return false;
 }

  $width = isset($info['width']) ? $info['width'] : $info[0];
 $height = isset($info['height']) ? $info['height'] : $info[1];

 // Calculate aspect ratio
  $wRatio = $maxSize / $width;
$hRatio = $maxSize / $height;

// Using imagecreatefromstring will automatically detect the file type
 $sourceImage = imagecreatefromstring(file_get_contents($inputFileName));

// Calculate a proportional width and height no larger than the max size.
 if ( ($width <= $maxSize) && ($height <= $maxSize) )
 {
 // Input is smaller than thumbnail, do nothing
   return $sourceImage;
 }
 elseif ( ($wRatio * $height) < $maxSize )
 {
 // Image is horizontal
 $tHeight = ceil($wRatio * $height);
 $tWidth = $maxSize;
  }
  else
 {
 // Image is vertical
 $tWidth = ceil($hRatio * $width);
 $tHeight = $maxSize;
  }

  $thumb = imagecreatetruecolor($tWidth, $tHeight);

 if ( $sourceImage === false )
 {
 // Could not load image
 return false;
  }

  // Copy resampled makes a smooth thumbnail
  imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height);
 imagedestroy($sourceImage);

 return $thumb;
 }

   /**
    * Save the image to a file. Type is determined from the extension.
     * $quality is only used for jpegs.
      * Author: mthorn.net
        */
  function imageToFile($im, $fileName, $quality = 80)
  {
 if ( !$im || file_exists($fileName) )
 {
return false;
}

$ext = strtolower(substr($fileName, strrpos($fileName, '.')));

switch ( $ext )
{
 case '.gif':
 imagegif($im, $fileName);
break;
case '.jpg':
case '.jpeg':
imagejpeg($im, $fileName, $quality);
break;
case '.png':
imagepng($im, $fileName);
break;
case '.bmp':
imagewbmp($im, $fileName);
break;
default:
return false;
}

return true;
}

$im = thumbnail('temp.jpg', 100);
imageToFile($im, 'temp-thumbnail.jpg');

Help will be greatly appreciated...


Solution

  • You can use following;

    <?php
    ....
    if(move_uploaded_file($tmp, $path.$actual_image_name)) {
        // Create thumbnail here
        $thumb = thumbnail($path.$actual_image_name, "80"); // image name, and size
        imageToFile($thumb, 'path/to/thumb/thumbnail_' . $session_id . '.jpg');
    
        mysql_query("UPDATE users SET profile_image='$actual_image_name' WHERE uid='$session_id'");
        echo "<img src='uploads/".$actual_image_name."'  class='preview'>";
    }
    ...
    ?>
    

    Do not forget to add thumbnail and imageToFile to put in your php file