emil.c
emil.c

Reputation: 2018

How to use thumb generator inside PHP script

I'm trying to use this thumbnail generator, but as you can see you have to go through this link to create an image thumb. This is maybe a dumb question, but how do I get it work inside a php script that saves some variables to database? I tried to include

header("Location: http://www.zubrag.com/thumb.php?src=http://www.test.com/test.jpg&dest=thumb.jpg&x=100&y=50"); 

but it doesn't work. I bet there's really easy solution but I can't find it.

Upvotes: 1

Views: 1723

Answers (4)

Adeel Mughal
Adeel Mughal

Reputation: 736

You can try this

<?

$property_id = 1; // for our little example here

define("_IMAGE_PATH","property_images/");
// max dimensions allowed:
define("_IMAGE_WIDTH","640");
define("_IMAGE_HEIGHT","480");
define("_IMAGE_THUMB_WIDTH","100");
define("_IMAGE_THUMB_HEIGHT","75");


// grab the path to the temporary file (image) that the user uploaded
$photo = $_FILES['new_image']['tmp_name'];
// check if it exists
if(is_uploaded_file($photo)){
    //the real image file name
    $real_name = strtolower($_FILES['new_image']['name']);
    // image type based on image file name extension:
    if(strstr($real_name,".png")){
        $image_type = "png";
    }else if(strstr($real_name,".jpg")){
        $image_type = "jpg";
    }else if(strstr($real_name,".gif")){
        $image_type = "gif";
    }else{
        die("Unsupported image type");
    }

    // find the next image name we are going to save
    $x=1;
    while(true){
        $image_name = _IMAGE_PATH."${property_id}/${x}.jpg";
        if(!is_file($image_name))break;
        $x++;
    }

    // start processing the main bigger image:
    $max_width = _IMAGE_WIDTH; $max_height = _IMAGE_HEIGHT;
    $size = getimagesize($photo);
    $width = $size[0];
    $height = $size[1];
    $x_ratio = $max_width / $width;
    $y_ratio = $max_height / $height;
    if(($width <= $max_width)&&($height <= $max_height)){
        $tn_width = $width;
        $tn_height = $height;
    }else{
        if(($x_ratio * $height) < $max_height){
            $tn_height = ceil($x_ratio * $height);
            $tn_width = $max_width;
        }else{
            $tn_width = ceil($y_ratio * $width);
            $tn_height = $max_height;
        }
    }
    switch($image_type){
        case "png": $src=imagecreatefrompng($photo); break;
        case "jpg": $src=imagecreatefromjpeg($photo); break;
        case "gif": $src=imagecreatefromgif($photo); break;
    }
    // destination resized image:
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    // resize original image onto $dst
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    // write the final jpeg image..
    imagejpeg($dst, $image_name, 100) or die("Error: your photo
    has not been saved. Please contact the administrator");
    // time to clean up
    imagedestroy($src);
    imagedestroy($dst);


    // and now we do it alll again for the thumbnail:
    $max_width = _IMAGE_THUMB_WIDTH; $max_height = _IMAGE_THUMB_HEIGHT;
    $size = GetImageSize($photo);
    $width = $size[0];
    $height = $size[1];
    $x_ratio = $max_width / $width;
    $y_ratio = $max_height / $height;
    if(($width <= $max_width)&&($height <= $max_height)){
        $tn_width = $width;
        $tn_height = $height;
    }else{
        if(($x_ratio * $height) < $max_height){
            $tn_height = ceil($x_ratio * $height);
            $tn_width = $max_width;
        }else{
            $tn_width = ceil($y_ratio * $width);
            $tn_height = $max_height;
        }
    }
    switch($image_type){
        case "png": $src=imagecreatefrompng($photo); break;
        case "jpg": $src=imagecreatefromjpeg($photo); break;
        case "gif": $src=imagecreatefromgif($photo); break;
    }
    $dst = imagecreatetruecolor($tn_width, $tn_height);
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $tn_width, $tn_height, $width, $height);
    $thumbfile = $image_name . ".thumb.jpg";
    if(file_exists($thumbfile))unlink($thumbfile);
    imagejpeg($dst, $thumbfile, 100) or die("Error: your photo thumb has not been saved.
       Please contact the administrator");
    imagedestroy($src);
    imagedestroy($dst);
}
?> 

Upvotes: 0

Neysor
Neysor

Reputation: 3909

I really can't see your problem...

Do you want to do more than making a thumb at a line where you are calling the script? Just put out the lines of code from the thumb.php and use it in your script.

include('image.class.php');

$img = new Zubrag_image;

// initialize
$img->max_x        = $max_x;
$img->max_y        = $max_y;
$img->cut_x        = $cut_x;
$img->cut_y        = $cut_y;
$img->quality      = $image_quality;
$img->save_to_file = $save_to_file;
$img->image_type   = $image_type;

// generate thumbnail
$img->GenerateThumbFile($images_folder . $from_name, $thumbs_folder . $to_name);

you only have to change the values with your desired one... this should work in my short review of the script.

Upvotes: 3

Kypros
Kypros

Reputation: 2986

Without any personal prior experience with the particular generator, what you will need to display an image will be something in the form of:

<img src="thumb.php?src=link/to/image.jpg&x=100&y=50&f=0"/>

Upvotes: 0

JJJ
JJJ

Reputation: 33163

I think you misread the instructions. It's not a web service but a PHP script you have to install to your server. The zubrag.com url is just an example, you replace it with your own site's url.

Upvotes: 0

Related Questions