Reputation: 2178
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
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
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
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
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
2.9Lession
And also converting Base64 for image Refer this Links
Upvotes: 7
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
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
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