PNG,GIF缩略图背景透明函数.(都支持,就差一个缺点了[黑色的处理])

Dleno 2009-11-18 02:45:11
突然需要这个功能,找了别人的一个函数来用,才发现gif和png北京都是黑色.
然后就改,改到现在都可以实现了.
但就是gif的时候,对黑色的处理不好.把图片的黑色也给透明了.

有哪位高手解决下这个问题.

<?PHP
/*
$source_img = "../base_img/index.jpg";
$target_dir='../base_img/';
$new_width=500;
$new_height=500;
$if_cut=0;
$target_name='HanroadClass';
$img=new HanroadClass;
$img->HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut);
*/
class HanroadClass
{
/**//**********************
利用PHP的GD库生成缩略图。
支持图片格式:jpg,gif,png
$source_img: 源图象完整路径
$target_dir: 目标图象目录
$target_name: 目标图象名称
$new_width: 目标图象宽
$new_height: 目标图象高
$if_cut: 是否裁图
1(裁图): 裁图则按设置的大小生成目标图象
0(不裁): 不裁则按比例生成目标图象
**********************/
function HrResize($source_img,$target_dir,$target_name,$new_width,$new_height,$if_cut) {
//图片类型
$img_type = strtolower(substr(strrchr($source_img,"."),1));

//图象的完整目标路径
$tar_url = $target_dir."/".$target_name.".".$img_type;

//初始化图象
if($img_type=="jpg")$temp_img = imagecreatefromjpeg($source_img);
if($img_type=="gif")$temp_img = imagecreatefromgif($source_img);
if($img_type=="png")$temp_img = imagecreatefrompng($source_img);


//原始图象的宽和高
$old_width = imagesx($temp_img);
$old_height = imagesy($temp_img);

//改变前后的图象的比例
$new_ratio = $new_width/$new_height;
$old_ratio = $old_width/$old_height;

//生成新图象的参数
//情况一:裁图 则按设置的大小生成目标图象
if($if_cut=="1"){
$new_width = $new_width;
$new_height = $new_height;
//高度优先
if($old_ratio>=$new_ratio){
$old_width = $old_height*$new_ratio;
$old_height = $old_height;
}else{//宽度优先
$old_width = $old_width;
$old_height = $old_width/$new_ratio;
}
}else{//情况二:不裁图 则按比例生成目标图象
$old_width = $old_width;
$old_height = $old_height;
//高度优先
if($old_ratio>=$new_ratio) {
$new_width = $new_width;
$new_height = $new_width/$old_ratio;
}else{//宽度优先
$new_width = $new_height*$old_ratio;
$new_height = $new_height;
}
}
//生成新图片
$new_img = imagecreatetruecolor($new_width,$new_height);
if($img_type=="gif"){
imagealphablending($new_img, false);
imagesavealpha($new_img, true);
}
if($img_type=="png"){
imagesavealpha($temp_img,true);
imagealphablending($new_img,false);
imagesavealpha($new_img,true);
}
imagecopyresampled($new_img,$temp_img,0,0,0,0,$new_width,$new_height,$old_width,$old_height);

if($img_type=="jpg")imagejpeg($new_img,$tar_url);
if($img_type=="gif"){
$bgcolor=imagecolorallocate($new_img,0,0,0);
$bgcolor=imagecolortransparent($new_img,$bgcolor);
$bgcolor=imagecolorallocatealpha($new_img, 0, 0, 0,127);
imagefill($new_img, 0, 0, $bgcolor);
imagegif($new_img,$tar_url);
}
if($img_type=="png")imagepng($new_img,$tar_url);
imagedestroy($source_img);
imagedestroy($new_img);
}
}
?>


...全文
428 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱学堂 2011-12-05
  • 打赏
  • 举报
回复
去除 if($img_type=="gif"){
imagealphablending($new_img, false);
imagesavealpha($new_img, true);
}
去除 $bgcolor=imagecolorallocatealpha($new_img, 0, 0, 0,127);
imagefill($new_img, 0, 0, $bgcolor);
就行了,我试过了,你准备给我几分
iwantnet 2009-12-02
  • 打赏
  • 举报
回复
帮顶!
Dleno 2009-12-02
  • 打赏
  • 举报
回复
这么久了都还没有人!
顶一下
Dleno 2009-11-18
  • 打赏
  • 举报
回复
没有人?
能简介: 文件管理功能: 1.支持的文件格式包括:BMP、GIF、ICO、TGA、PCX、WBMP、WMF、JPEG、PNG、MNG、TIFF、JBIG、PNM,PPM,PGM、RAS,DXF ,DWF、DWG 、IGS, MIF,PLT,PRN,HPGL/HPGL2、DGN, SHP, SAT, PS/IGES 2.打开图形图像文件;支持从URL网上打开;3.打印文件:全部打印和选择打印,打印预览, 打印到文件;4.保存和读取自定义格式文件;5.将矢量图以指定的尺寸保存为光珊图或者复制到系统粘贴板上; 显示功能: 1.显示平移,自由缩放,框选放大,最佳显示;2.回溯显示;3.支持显示透明命令操作;4.支持三维文件格式显示;5.鸟瞰,鹰眼,放大镜功能; 元素支持功能:1.点;直线,折线,射线;圆,圆弧;椭圆,椭圆弧;.样条线;函数曲线;填充区域;多义线;2.文字标注;3.尺寸标注(水平,竖直,对齐,角度,半径,直径尺寸等);4.块插入;5.图片插入;6.多边形;7.引线;8.基本三维元素创建;9.图层;10.块定义;图片操作功能:1.支持多种图像文件格式的转换;2.图片的旋转,缩放变换;3.图片的alpha混合度调节;4.图片的色彩明暗调节;5.图片的多种效果支持,锐化,柔化,浮雕效果等;6.图片的合并与切割;7.读取粘贴板上的图片;8.指定大小尺寸保存图片; 属性功能:1.几何属性,颜色,线型,线宽;2.图层属性:显示,隐藏,冻结;3.尺寸属性:颜色,箭头,尺寸线属性,尺寸引线属性,尺寸文字属性,显示单位等;4.文字属性:字体和颜色;字体包括:字体名称,字体高度宽度,是否重显,倾斜,字符集,大小型文件字体(兼容AutoCAD shx字体文件)等;5.块属性:名称,基点,旋转角度,缩放比例;6.剖面线属性:名称,旋转角度,缩放比例; 创建功能: 1.创建点线圆几何等元素;2.两点或三点创建圆或圆弧;3.两点或三点创建椭圆或椭圆弧;4.相应的方式创建常见的各种元素; 编辑构造功能: 1.可以修改元素的几何或显示属性;2.复制,粘贴,删除;移动,旋转,镜像,阵列,打断,延伸等功能; 选择和捕捉功能: 1.单选,多选,框选,过滤选择;2.可以捕捉所有元素及其延长线;3.关键点捕捉:支持起点,终点,中点,中心点,切点,交点,相线点,平行,垂直,延长线相交点; 计算功能:1.两点距离,几何长度,周长的计算;2.面积计算;3.角度计算;4.点是否在区域内;5.交点计算;6.点选封闭区域,填充算法;7.最大,最小封闭区域算法;8.最短路径算法; 系统属性设置功能:1.系统缺省的属性设置; 接口函数: 1.所有功能都提供接口函数供二次开发者使用;2.每个元素都有唯一的ID号;用户可以根据ID号把图形系统和自己的系统联系起来;3.接口以DLL库和OCX两种两种方式提供; 其他功能:1.将windowsTuretype字体转换为矢量图形(TTF2DXF);2. 生成插入块的缩略图
升级内容 1、可以给jpg、gifpng、bmp图片加水印,动画不加水印 2、批量管理加上全选 3、新闻内容简繁体转换功能 4、可设置会员注册默认会员组 5、可设置非会员和会员可推荐新闻分类 6、记录会员登陆次数和最后登陆时间 7、多线程下载站外图片(同时取消对免费版下载数的限制) 8、首页调用友情链接 9、新增评论审核功能,可设置是否审核 10、可设置友情链接图标大小不限制 11、会员权限可设置是否可设置固顶、头条、醒目 12、显示图片新闻函数增加不显示新闻标题参数 13、可设置分类限制指定会员组阅读 14、添加新闻标题后加评论连接的选项 15、解决写评论输入中文时屏幕闪烁问题 16、头条新闻函数增加一个是否显示分类链接的参数 17、添加统计站外链接新闻点击数 18、新闻中图片自动缩小尺寸可在inc/imgResize.js中修改 19、增加rss新闻订阅功能,可订阅分类或会员rss专题(rss介绍) 20、增加Access数据库压缩功能 21、评论区分会员和非会员 22、会员资料页可显示会员所有新闻 23、会员添加字段描述和图片 24、分类页增加图片新闻简介式显示和图片站模式(DataList可自行美化) 25、增加网站调查功能 26、按web标准规范代码 27、html编辑器支持Xhtml,可显示无边框表格 28、添加简介式显示新闻函数TopListSummary 29、自动取新闻内第一张适合的本地图片生成缩略图

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧