2013-07-23 5 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 для изменения размера. Пример кода: Чтобы создать миниатюру:

<?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

Если вы используете GD код будет

<?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, которая получит 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..."); 
Смежные вопросы