0

我是 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 个不同大小的图像。带着敬意。

4

2 回答 2

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

更改图像大小 - PHP

于 2013-07-12T07:47:06.027 回答
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 );

PS:从字符串创建图像时,我认为在内容中添加斜杠并不好。

于 2013-07-12T07:53:42.127 回答