php 输出图片报错为什么?

发布网友 发布时间:2022-04-24 19:55

我来回答

4个回答

热心网友 时间:2023-10-09 05:24

echo $rand 是你自己加的吧,php每句话结束要加分号

另外 ,验证码一般要存在session里,以便提交回来的数据验证

把echo $rand那行改成下面这样

session_start();
$_SESSION['verify_code']=$rand;

另外 ,文件结尾可以不要 ?> 以防结尾后面有空格啥的影响图片输出。

这样在你表单提交回来的页面就可以用

if($_POST['verify']!=$_SESSION['verify_code']){
    echo '验证码错误';
    exit;
}

来做验证

追问

我只想在上传图片上追加文字水印。但是就这样了。直接输出图片没问题。

追答

上传图片加水印方式跟这个不一样,一般是生成两个图片对象,一张原图一张水印图,

再计算水印摆放的位置和缩放,将水印拷贝到原图上,再保存到文件

$waterimg='./static/images/result_image_bg.png';
list($wtwidth, $wtheight, $type, $attr) = getimagesize($waterimg);
$water=imagecreatefrompng($waterimg);
imagesavealpha($water, true);

$uploadimg = '上传的图片路径';
list($upwidth, $upheight, $type, $attr) = getimagesize($uploadimg );
$upload=imagecreatefromjpg($uploadimg );//根据上传的格式确定使用jpg或png

//拷贝水印到上传图片上
imagecopyresized($upload,$water,
    $upwidth-$wtwidth-10,  //水印放在右下角10像素
    $upheight-$wtheight-10,
    0,0,
    $wtwidth,$wtheight,    //这里没缩放,可以根据需求计算一下缩放
    $wtwidth,$wtheight);
    
//保存图片  根据上传的格式确定使用 imagejpeg或imagepng
imagejpeg($upload, $uploadimg);

热心网友 时间:2023-10-09 05:25

for循环的前面要插入一行:
$rand="";

热心网友 时间:2023-10-09 05:25

建议把header('Content-Type: image/jpeg');先注释掉,看一下页面是不是有报错,比如你的php没有装GD库之类的

热心网友 时间:2023-10-09 05:26

11行缺少分号,加上
echo $rand; 就好了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com