注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

phperwuhan的博客

记载一个phper的历程!phperwuhan.blog.163.com

 
 
 

日志

 
 

php 处理透明背景的图片时的问题  

2009-12-06 15:32:11|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

来源:http://hi.baidu.com/loveyoursmile/blog/item/753705e9d61aba36b80e2d29.html/cmtid/9af7f30313521ae709fa9375

PHP图象处理之透明背景的gif和png图片的一些问题

1,直接读取有透明背景的PNG格式文件,然后直接输出,背景变成了黑色,gif则没有这种情况。
  解决方法:使用 imagesavealpha ($image, true),此函数是针对png格式的.
  <?php
  $im=imagecreatefrompng("demo_1.png");
  imagesavealpha($im, true);//设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息。
  header('Content-type: image/png');
  imagepng($im);
  imagedestroy($im);
  ?>
  注意一点:不是所有的浏览器都支持 alpha 通道,如果在你的浏览器上碰到问题,试着用兼容 alpha 通道的浏览器(例如最新版的 Mozilla)重新加载脚本。
  经测试,在IE中显示效果不理想(但图片仍然是透明的,保存下来看下就知道),背景变成了灰色.

2,在处理(比如缩小,剪切)有透明背景的gif和png图片然后输出时,图片透明部分变成了黑色。
示例代码如下:
<?php
$size = 300;
$image=imagecreatetruecolor($size, $size);//创建图片
$back =imagecolorallocatealpha($image, 255, 255, 255,127);//加透明颜色,其实好象没什么效果。-_-!

  //读取图片
$im=imagecreatefrompng("demo_1.png");
imagecopyresampled($image,$im,10,20,0,0,128,128,128,128);//合拼图片
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

  效果是图片背景变成了黑色。
解决办法:使用imagecreate()而不是用imagecreatetruecolor()创建图片。
因为imagecreatetruecolor()返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像,
看下帮助手册就知道了。

  但这种方法仍然有bug,用于png时,png有部分颜色失去,变成了透明。
解决办法:未知,有知道的告诉我一声,在下先谢谢了。

3.php生产透明背景图片

$wite = ImageColorAllocate($ni,255,255,255);//填充的背景色你可以重新指定,我用的是白色
imagefilledrectangle($ni, 0, 0, $dstW, $dstH, $wite);
ImageColorTransparent($ni, $wite);

 

不过现在的方法还不是太理想。继续整理中~~~~~

 

 

 

2的bug解决办法

    //创建透明画布
    $im_out =imagecreatetruecolor($imgcreat_x, $imgcreat_y);
    imagealphablending($im_out, true);
    imagesavealpha($im_out, true);
    $trans_colour = imagecolorallocatealpha($im_out, 0, 0, 0, 127);
    imagefill($im_out, 0, 0, $trans_colour);
    ImageCopyResized($im_out, $im, 0,0, 0, 0, $img_x, $img_y, $img[0], $img[1]);
    imagepng($im_out);

  评论这张
 
阅读(1284)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017