zoukankan      html  css  js  c++  java
  • php 处理透明背景的图片时的问题

    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);

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

  • 相关阅读:
    Quartz.net
    Perfview 分析进程性能
    windbg 分析cpu异常
    ansible-vault 教程
    ansible 自动化运维(2)
    简单生成随机测试数据
    基于 RabbitMQ-EasyNetQ 实现.NET与Go的消息调度交互
    自绘 TreeDataView 控件
    C# 创建音频WAVE文件头信息(*.wav)
    C# GOF 23种设计模式 学习Log【更新中】
  • 原文地址:https://www.cnblogs.com/wayne173/p/3741869.html
Copyright © 2011-2022 走看看