生成缩略图之后的页面显示问题
程序员文章站
2024-01-30 17:27:40
...
watermark="./logo.jpg";
}
// $imageInfo是上传图片后返回的信息
// $type - 1代表生成商品或文章的缩略图,2代表生成头像缩略图
public function makeThumb($imageInfo,$with=360,$height=360,$type=1){
if($imageInfo['type']==".jpg"){
$src_image=imagecreatefromjpeg($imageInfo['source_img_path']);
}else if($imageInfo['type']==".png"){
$src_image=imagecreatefrompng($imageInfo['source_img_path']);
}else if($imageInfo['type']==".gif"){
$src_image=imagecreatefromgif($imageInfo['source_img_path']);
}
$image=imagecreatetruecolor($with,$height);
$white=imagecolorallocate($image,255,255,255);
// 将背景设为透明
imagecolortransparent($image,$white);
imagefill($image,0,0,$white);
// 开始判断最终生成的缩略图尺寸,避免变形
$finalWidth=$with;
$finalHeight=$height;
$x=$y=0;
if($imageInfo['width']$imageInfo['height']){
// 确定缩放比例
$scale=round($finalWidth/$imageInfo['width'],2);
$finalHeight=round($scale*$imageInfo['height']);
$y=round(($height-$finalHeight)/2);
}else if($imageInfo['width']$height){
$scale=round($finalHeight/$imageInfo['height'],2);
$finalWidth=round($scale*$imageInfo['width']);
$x=round(($with-$finalWidth)/2);
}else if($with=200 && $finalHeight>=260){
$watermark=imagecreatefromjpeg($this->watermark);
imagecopymerge($image,$watermark,$finalWidth-100,$finalHeight-130,0,0,100,130,80);
imagedestroy($watermark);
}
!is_dir($this->thumbPath) && mkdir($this->thumbPath);
// 保存路径+名字
$this->thumbPath=$this->thumbPath."/".time().mt_rand()."_{$finalWidth}_{$finalHeight}.png";
// 最后统一生成png格式,清晰度较高
header("content-type:image/png");
imagepng($image,$this->thumbPath);
imagedestroy($image);
imagedestroy($src_image);
}
}
if($_FILES){
$a=new Thumb();
// 实际图片信息是上传处理过的信息,这里写成了固定的
$a->makeThumb(array('width'=>430,'height'=>430,'type'=>'.jpg','source_img_path'=>'./11.jpg'));
}
?>
11.jpg
水印图
执行该脚本之后,生成的缩略图没问题,正常保存
但是页面却显示小边框
求解,谢谢诸位
回复内容:
watermark="./logo.jpg";
}
// $imageInfo是上传图片后返回的信息
// $type - 1代表生成商品或文章的缩略图,2代表生成头像缩略图
public function makeThumb($imageInfo,$with=360,$height=360,$type=1){
if($imageInfo['type']==".jpg"){
$src_image=imagecreatefromjpeg($imageInfo['source_img_path']);
}else if($imageInfo['type']==".png"){
$src_image=imagecreatefrompng($imageInfo['source_img_path']);
}else if($imageInfo['type']==".gif"){
$src_image=imagecreatefromgif($imageInfo['source_img_path']);
}
$image=imagecreatetruecolor($with,$height);
$white=imagecolorallocate($image,255,255,255);
// 将背景设为透明
imagecolortransparent($image,$white);
imagefill($image,0,0,$white);
// 开始判断最终生成的缩略图尺寸,避免变形
$finalWidth=$with;
$finalHeight=$height;
$x=$y=0;
if($imageInfo['width']$imageInfo['height']){
// 确定缩放比例
$scale=round($finalWidth/$imageInfo['width'],2);
$finalHeight=round($scale*$imageInfo['height']);
$y=round(($height-$finalHeight)/2);
}else if($imageInfo['width']$height){
$scale=round($finalHeight/$imageInfo['height'],2);
$finalWidth=round($scale*$imageInfo['width']);
$x=round(($with-$finalWidth)/2);
}else if($with=200 && $finalHeight>=260){
$watermark=imagecreatefromjpeg($this->watermark);
imagecopymerge($image,$watermark,$finalWidth-100,$finalHeight-130,0,0,100,130,80);
imagedestroy($watermark);
}
!is_dir($this->thumbPath) && mkdir($this->thumbPath);
// 保存路径+名字
$this->thumbPath=$this->thumbPath."/".time().mt_rand()."_{$finalWidth}_{$finalHeight}.png";
// 最后统一生成png格式,清晰度较高
header("content-type:image/png");
imagepng($image,$this->thumbPath);
imagedestroy($image);
imagedestroy($src_image);
}
}
if($_FILES){
$a=new Thumb();
// 实际图片信息是上传处理过的信息,这里写成了固定的
$a->makeThumb(array('width'=>430,'height'=>430,'type'=>'.jpg','source_img_path'=>'./11.jpg'));
}
?>
11.jpg
水印图
执行该脚本之后,生成的缩略图没问题,正常保存
但是页面却显示小边框
求解,谢谢诸位
header("content-type:image/png");
把这一段删除试试?
你只是生成缩略图并不直接把缩略图显示给浏览器,却配置了浏览器输出为png格式,显示个方块,就是浏览器要显示图片,但是却没有正确的图片显示。
上一篇: php去掉文件前几行的方法
下一篇: PHP教程:基于正则表达式替换的模板引擎
推荐阅读
-
生成缩略图之后的页面显示问题
-
添加数据之后不跳页面显示一个漂亮的提示信息(非ajax提交数据),提示信息ajax
-
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
-
php动态生成缩略图并输出显示的方法_PHP教程
-
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码_php技巧
-
xampp+mediawiki,页面显示不正常的问题
-
关于页面静态化的有关问题:每隔5分钟后台生成新的静态化页面,在新旧页面替换的过程中,客户端会不会发生404异常
-
自行解决12306页面显示异常的问题_html/css_WEB-ITnose
-
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的_PHP
-
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码