2013-07-12 5 views
0

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

<?php 
if (!isset($_FILES['image']['tmp_name'])) { 
} 
else{ 
$file=$_FILES['image']['tmp_name']; 
$img_src = imagecreatefromstring(file_get_contents($file)); 
$img_dest = imagecreatetruecolor(851, 315); 
$src_width = imagesx($img_src); 
$src_height = imagesy($img_src); 
imagecopyresized($img_dest, $img_src, 0, 0, 0, 0, 851, 315, $src_width, $src_height); 
$text= $_POST['text']; 
$font_path = 'arial.TTF'; 
$grey = imagecolorallocate($img_dest, 128, 128, 128); 
$black = imagecolorallocate($img_dest, 0, 0, 0); 
imagettftext($img_dest, 25, 0, 302, 62, $grey, $font_path, $text); 
imagettftext($img_dest, 25, 0, 300, 60, $black, $font_path, $text); 
header("Content-type: image/png"); 
imagepng($img_dest); 
imagedestroy($img_dest); 
imagedestroy($img_src); 
} 
?> 

Я загружаю изображение через форму и запускаю этот скрипт. изображение отображается. но как я могу отображать более 1 изображений разного размера, используя этот метод. с уважением.

+0

Привет, Есть так много примеров этого онлайн, это не подходит для вопроса о переполнении стека. Попробуйте выполнить поиск 'php resize image' и т.п. В руководстве для этих функций также есть примеры. –

+0

, например. http://php.net/manual/en/function.imagecopyresampled.php –

ответ

0

Вы должны создать два изображения. Один можно создать непосредственно из источника

$img_src = imagecreatefrompng($file); 

или

$img_src = imagecreatefromjpeg($file); 

или

$img_src = imagecreatefromstring(file_get_contents($file)); 

получения размера файла, в Src:

$sizes = imagesize($img_src); 
$src_width = $sizes[0]; 
$src_height = $sizes[1]; 

Но теперь изображение будет масштабировано до 200x200 эв ru, если изображение src не совпадает с высотой. Вы можете предотвратить это путем расчета ДСТ-размер:

$faktor = ($src_width > $src_height ? $src_width : $src_height); 
$faktor = 100/$faktor; 

$f_width = round($src_width * $faktor); 
$f_height = round($src_height * $faktor); 

$new_w = 200 * $f_width; 
$new_h = 200 * $f_height; 

Второй вы можете создать из размеру вашего назначения

$img_dest = imagecreatetruecolor($new_w, $new_h); 

И затем вы можете скопировать малоформатной источник на новый

imagecopyresized($img_dest, $img_src, 0, 0, 0, 0, $new_w, $new_h, $src_width, $src_height); 
header("Content-type: image/png"); 
imagepng($img_dest); 
imagedestroy($img_dest); 
imagedestroy($img_src); 

PS: При создании изображения из строки я думаю, что это не полезно для добавления к содержимому.

+0

все еще получает сломанное изображение ... :( –

+0

. $ src_width и $ src_height нужно указывать вручную. –

+0

Так что же ваш код прямо сейчас? прокомментируйте заголовок и повторите необходимые данные и убедитесь, что у вас есть правильное содержимое для размеров и изображения. Или попробуйте сначала сделать «imagepng ($ img_src);» вместо «imagepng ($ img_dest);», чтобы проверить, является ли src изображение будет правильным до изменения размера. – DaKirsche

0

Я нашел решение в старый вопрос для изменения размера изображения

$original_info = getimagesize($filename); 
$original_w = $original_info[0]; 
$original_h = $original_info[1]; 
$original_img = imagecreatefromjpg($filename); 
$thumb_w = 100; 
$thumb_h = 100; 
$thumb_img = imagecreatetruecolor($thumb_w, $thumb_h); 
imagecopyresampled($thumb_img, $original_img, 
        0, 0, 
        0, 0, 
        $original_w, $original_h 
        $thumb_w, $thumb_h); 
imagejpeg($thumb_img, $thumb_filename); 
destroyimage($thumb_img); 
destroyimage($original_img); 

Change Image Size - PHP

Смежные вопросы