2013-07-23 89 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..."); 
相關問題