2013-04-13 4 views
0

Я очень новичок в изменении размера изображения в php. Я хотел бы сделать эскиз с помощью загруженного изображения. Я использовал ниже код, но он не работаю, кто-нибудь может мне помочь? .. Спасибо заранее ...Изменение размера изображения в PHP

$source_image = $path.$row->photosfolder; 
$size = getimagesize($source_image); 
$w = $size[0]; 
$h = $size[1]; 
$simg = imagecreatefromjpeg($source_image); 
$dimg = imagecreatetruecolor(150, 225); 
$wm = $w/150; 
$hm = $h/225; 
$h_height = 225/2; 
$w_height = 150/2; 

if ($w > $h) { 
    $temp = imagecopyresampled($dimg, $simg, 0, 0, 0, 0, 150, 225, $w, $h); 
} 
elseif (($w < $h) || ($w == $h)) { 
    $temp = imagecopyresampled($dimg, $simg, 0, 0, 0, 0, 150, 225, $w, $h); 
} 
else { 
    $temp = imagecopyresampled($dimg, $simg, 0, 0, 0, 0, 150, 225, $w, $h); 
} 

$thumb_image = imagejpeg($dimg, $simg, 100); 
+0

В чем проблема? Вы говорите, что это не работает, но вы не видите ошибку или то, о чем идет речь. – bestprogrammerintheworld

+0

Не делайте $ temp = ... Следуйте примеру на [php.net] (http://php.net/manual/en/function.imagecopyresampled.php) – Daniel

+0

Может быть, слишком много, но проверьте. Представьте себе: https : //github.com/avalanche123/Imagine – catchamonkey

ответ

0

проверки timthumb.php проста в использовании, и вы можете найти код полного образовательного

0

Если вы хотите изменить размер изображения, вы должны сделать это на стороне клиента, потому что манипуляция с изображениями на PHP занимает много памяти и времени процессора, и ее не нужно делать на стороне сервера (нет доступа к db, нет доступа к сеанс и т. д.).

Если вы все еще хотите сделать это на PHP, вы можете использовать его функции, чтобы получить правильные размеры:

list($realW, $realH) = getimagesize($source_image); 

$realR = $realW/$realH; 
$thumbR = $thumbW/$thumbH; 

// If you want your resize image to fit inside the max thumb size : 

if($realR > $thumbR) // Real image if flatter than thumb 
{ 
    $newW = $thumbW; 
    $newH = $newW/$realR; 
} 
else 
{ 
    $newH = $thumbH; 
    $newW = $newH * $realR; 
} 

// Or if you want your resize image to be as small as possible but 
// not smaller than your thumb. This can be helpful in some cases. 

if($realR < $thumbR) 
{ 
    // Same code 
} 

, а затем использовать копию, как передискретизируется ты (чтение PHP руководство, если вы не можете получить он работает, есть примеры ниже синопсиса функции).

Если вы хотите, чтобы изменить размер изображения с помощью JavaScript, вы можете использовать <canvas>:

var canvas = document.createElement('canvas'); 
var image = document.getElementById('image'); 
var context = canvas.getContext('2d'); 
context.save(); 
context.drawImage(image, /* Here you put the right values using the algorithms above */); 
context.restore(); 
var thumb = document.createElement('image'); 
thumb.src = canvas.toDataUrl(); 

Или что-то подобное. Вы можете изменить несколько вещей в зависимости от вашего конкретного случая.

0

Пожалуйста, попробуйте ввести ниже код, он изменит размер изображения и создаст новый миниатюру. Новый размер определяется 100 X 100. Этот пример также сохранит аспектное соотношение изображения. Примечание:

путь 1.Image будет путь к каталогу, если вы хотите установить полный путь. 2. В примере, который мы рассматриваем для файла jpg, вы можете использовать для файла GIF PGN & с imagecreatefrompng, imagecreatefromgif. 3. Это создаст файл PNG.

$_imagePath = 'somefile.jpg'; 
$im = imagecreatefromjpeg($_imagePath); 

imagealphablending($im, true); 

$_orgWidth = imagesx($im); 
$_orgHeight = imagesy($im); 

$_newWidth = 100; 
$_newHeight = 100; 

$_finalHeight = $_orgHeight * ($_newWidth/ $_orgWidth); 
    if($_finalHeight > $_newHeight){ 
     $_newWidth = $_orgWidth * ($_newHeight/$_orgHeight); 
    }else{ 
     $_newHeight = $_finalHeight ; 
    } 


$_thumb = imagecreatetruecolor($_newWidth, $_newHeight); 
imagealphablending($_thumb, true); 
imagesavealpha($_thumb, true); 

imagecopyresampled($_thumb, $im, 0, 0, 0, 0, $_newWidth, $_newHeight, $_orgWidth , $_orgHeight ); 

imagepng($_thumb, 'newname.png'); 
imagedestroy($_thumb);