2013-07-23 47 views
4

我正在创建一个应用程序,它需要通过php脚本将大图像转换为缩略图,然后将其编码为base64,以便我可以通过json将它发送到我的android应用程序。 我有调整图像大小的问题。我需要PHP脚本,帮助我做到这一点如何通过php脚本调整图像大小

+2

什么是您所使用的图像处理库? – San

回答

3

你可以试试这个图像调整大小功能tutorial

而且你也可以使用这个代码调整大小函数(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(); 

?> 

并且还指此链接用于调整尺寸图像

1. YETANOTHERLinks

2. 9Lession

而且也变换为Base64编码图像下面参考本Links

+1

您也可以使用[$ this-> cropThumbnailImage](http://php.net/manual/en/imagick.cropthumbnailimage.php)代替'resizeImage'来避免拉伸缩略图。 – Flimm

1

你可以尝试imagick - http://php.net/manual/en/imagick.resizeimage.php调整图像大小。示例代码:如果您使用的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(); 

?> 
1

代码会

<?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); 
?> 
5

的代码创建一个名为createThumbs的函数,该函数将获得th ree参数。第一个和第二个相应地是包含原始图像的目录的路径以及放置缩略图的目录的路径。第三个参数是您想要的缩略图图像的宽度。

<?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); 
?> 
+2

+1为好功能 –

0

的职位是有点老了,但如果有人想,我刚才提出这个功能

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..."); 
相关问题