欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

图片水印输出不能正常显示问题!

程序员文章站 2022-06-04 11:38:24
...
$img = "img/iphone.jpg";$info = getimagesize($img);//获取图片信息$type = image_type_to_extension($info[2],false);//图片后缀$fun = "imagecreatefrom{$type}";//确定后缀选择相应函数$image = $fun($img);//利用函数接入图片地址$img_mark = "img/ulogo.png";//设置水印路径$info_mark = getimagesize($img_mark);//获取水印图片基本信息$type_mark = image_type_to_extension($info_mark[2],false);//获取图片类型$fun_mark = "imagecreatefrom{$type_mark}";//$water = $fun_mark($img_mark);imagecopymerge($image, $water, 20, 30, 0, 0, $info_mark[0],$info_mark[1],30);//合并图片imagedestroy($water);header('Content-type:'.$info['mime']);//告诉浏览器是图片输出$func = "image{$type}";//选择相应函数调用$func($image);//浏览器输出图片$func($image,"newimg.".$type);//保存图片imagedestroy($image);//销毁图片


$func($image);
怎我这里不能输出图片在浏览器上显示?但又能保存图片到根目录下奇怪!!!


回复讨论(解决方案)

不能显示是什么意思?一个叉?

去掉程序文件的 BOM 头和多余的空格、空行

不能显示是什么意思?一个叉?

去掉程序文件的 BOM 头和多余的空格、空行



果真是BOM在作怪,设了无BOM格式URF8编码就可以了。为何会这样呢,可以解析下吗?

BOM 是若干个字符(utf-8是3个),但他并不属于图片的内容
不是图片的内容 加上 图片的内容,结果显然就不是图片了

BOM 是若干个字符(utf-8是3个),但他并不属于图片的内容
不是图片的内容 加上 图片的内容,结果显然就不是图片了



那怎么防止BOM的出现?

有时页面中又没有BOM出现,有时又会出现真奇怪~~~难道是工具问题?

BOM 头是你偏好 所谓的国际化 造成的
其实 BOM 不仅会影响图片的输出、文件的下载,还会影响页面的布局和 json 数据的解码
如果你一定要用 utf-8 编码保存文件,那么就一定要养成 无BOM 的习惯
其实在程序中很少有中文字符串常量的,所以并不需要保存为 utf-8 的