MrDumb
MrDumb

Reputation: 2178

How to resize image through php script

I am creating a app which requires to convert a large image to thumbnail through php script and then encode it to base64 so that i can send it through the json to my android app. I am having problem with resizing the image. I need php script which help me do that

Upvotes: 6

Views: 19485

Answers (7)

Mhrishad
Mhrishad

Reputation: 246

It's can be faster try for php LANCZOS

$thumb = new Imagick();

$thumb->readImage('XYZ.jpg');

$thumb->resizeImage(640,360,Imagick::FILTER_LANCZOS,1);

$thumb->writeImage('XYZ2.jpg');

$thumb->clear();
$thumb->destroy();

Or Shorter Version ::

$thumb = new Imagick('XYZ.jpg');

$thumb->resizeImage(640,360,Imagick::FILTER_LANCZOS,1);

$thumb->writeImage('XYZ2.jpg');

$thumb->destroy();

Upvotes: 0

Gael Huot
Gael Huot

Reputation: 1

The post is a bit old , but if someone want , I just made this function

function save_image_from_64($path, $name, $dimension, $original)
{
    header("Content-Type: image/jpeg");
    list($width,$height) = explode('x',$dimension); //Getting new height and width
    $img = str_replace('data:image/jpeg;base64,', '', $original); //Getting the base64 image
    $image = imagecreatefromstring(base64_decode($img));
    $new_image = imagecreatetruecolor($width, $height);
    imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, imagesx($image), imagesy($image));
    imagejpeg($new_image, $path.$name.'.jpg'); // saving the image
}

save_image_from_64("cdn/","test","800x200","data:image/jpeg;base64,/9j/4AAQS...");

Upvotes: 0

Rajendra Khabiya
Rajendra Khabiya

Reputation: 2030

The code below creates a function named createThumbs that will get three parameters. The first and the second is correspondingly the path to the directory that contains original images and the path to the directory in which thumbnails will be placed. The third parameter is the width you want for the thumbnail images.

<?php
function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth ) 
{
  // open the directory
  $dir = opendir( $pathToImages );

  // loop through it, looking for any/all JPG files:
  while (false !== ($fname = readdir( $dir ))) {
    // parse path for the extension
    $info = pathinfo($pathToImages . $fname);
    // continue only if this is a JPEG image
    if ( strtolower($info['extension']) == 'jpg' ) 
    {
      echo "Creating thumbnail for {$fname} <br />";

      // load image and get image size
      $img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
      $width = imagesx( $img );
      $height = imagesy( $img );

      // calculate thumbnail size
      $new_width = $thumbWidth;
      $new_height = floor( $height * ( $thumbWidth / $width ) );

      // create a new temporary image
      $tmp_img = imagecreatetruecolor( $new_width, $new_height );

      // copy and resize old image into new image 
      imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

      // save thumbnail into a file
      imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
    }
  }
  // close the directory
  closedir( $dir );
}
// call createThumb function and pass to it as parameters the path 
// to the directory that contains images, the path to the directory
// in which thumbnails will be placed and the thumbnail's width. 
// We are assuming that the path will be a relative path working 
// both in the filesystem, and through the web for links
createThumbs("upload/","upload/thumbs/",100);
?>

Upvotes: 5

VIVEK-MDU
VIVEK-MDU

Reputation: 2559

You can try this Image Resize function tutorial

And also you can used this code for resize function(GD).

<?php

$thumb = new Imagick();
$thumb->readImage('myimage.gif');    $thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
$thumb->writeImage('mythumb.gif');
$thumb->clear();
$thumb->destroy(); 

?>

Or, a shorter version of the same:

<?php

$thumb = new Imagick('myimage.gif');

$thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
$thumb->writeImage('mythumb.gif');

$thumb->destroy(); 

?>

And also refer this links for Resize image

1.YETANOTHERLinks

2.9Lession

And also converting Base64 for image Refer this Links

Upvotes: 7

AxelPAL
AxelPAL

Reputation: 1027

You can use for example TimThumb

timthumb.php?src=img.jpg&h=height&w=width

Then you should encode image to base64: How to convert an image to base64 encoding?

Upvotes: 1

San
San

Reputation: 624

If you are using GD the code will be

<?php
// File and new size
$filename = 'test.jpg';

// Content type
header('Content-Type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = YOUR REQUIRED WIDTH;
$newheight = YOUR REQUIRED HEIGHT;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>

Upvotes: 1

Balaji Kandasamy
Balaji Kandasamy

Reputation: 4506

You can try imagick - http://php.net/manual/en/imagick.resizeimage.php for resizing images. Sample code: To create a thumbnail:

<?php

$thumb = new Imagick();
$thumb->readImage('myimage.gif');    
$thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
$thumb->writeImage('mythumb.gif');
$thumb->clear();
$thumb->destroy(); 

?>

Upvotes: 1

Related Questions