图像调整大小并使用php和gd显示

时间:2013-07-12 07:42:07

标签: 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个以上的图像。 问候。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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];

但是现在即使src图像与高度不同,图像也会缩放到200x200。 您可以通过计算dst-size来阻止这种情况:

$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 );

P.S。:从字符串创建图像时,我认为对内容添加内容并不好。