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);
不过现在的方法还不是太理想。继续整理中~~~~
php 处理透明背景的图片时的问题的更多相关文章
- java 显示透明背景png图片
首先理由ps生成一个背景透明的png图片,然后设置JPanel面板的透明属性,也就是panel.setOpaque(false);设置为透明 class MyPanel extends JLayere ...
- Android—ListView条目背景为图片时,条目间距问题解决
ListView是android开发中使用最普遍的控件了,可有的listView条目的内容颇为丰富,甚至为了美观,背景用指定图片,如下图:
- css改变透明背景png图片的图标颜色
HTML: <p><strong>原始图标</strong></p> <i class="icon icon-del"> ...
- php缩放gif和png格式透明背景变成黑色的解决方法
在对gif或png格式的图片进行缩放等操作时,原本透明背景的图片最后都变成黑色的,解决办法 $img = imagecreatetruecolor(, ); //2.上色 $color=imageco ...
- VC++使用CImage PNG转BMP图片透明背景处理
PNG格式的图片是支持透明通道的,BMP格式的图片是没有透明通道的,所以当PNG格式的图片转换为BMP格式时,对于PNG图片的透明背景就需要进行特别的处理. VC++中的HBITMAP是支持透明色的, ...
- 【计算机视觉】OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
这个是我自己做的粗略的螺旋丸的图,导出为png并带有alpha通道. 最后和一只狗合成成这个样子. 效果还是可以的. 为了实现这个效果,首先我们要明白具有透明通道的图片的OpenCV的读取方式.在Op ...
- vc下打印透明背景图片
一.前言 刚接到个任务,要把带有透明背景的章子图片打印出来,开始觉得不是很简单吗,直接用vc自动生成的打印功能不就ok了.不过问题却不是想像的那么简单! 二.窗口中显示透明图片 在窗口中显示图片,可以 ...
- 关于imagic拼接透明背景图片的问题
目标: 为了做图片水印,需要水平拼接多个logo和文字... 之前用过imagick,所以继续使用. 第一个版本:实现了图片和文字的拼接,代码如下: package main import ( &qu ...
- 网页中PNG透明背景图片的完美应用
PNG 图片在网站设计中是不可或缺的部分,最大的特点应该在于 PNG 可以无损压缩,而且还可以设置透明,对于增强网站的图片色彩效果有重要的作用. 但为什么 PNG 图片却没有 GIF 和 JPG 图片 ...
随机推荐
- MongoDB (八) MongoDB 文档操作
一. MongoDB 插入文档 insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的 insert() 或 save() 方法. 语法 insert() 命令的基 ...
- 递推DP HDOJ 5328 Problem Killer
题目传送门 /* 递推DP: 如果a, b, c是等差数列,且b, c, d是等差数列,那么a, b, c, d是等差数列,等比数列同理 判断ai-2, ai-1, ai是否是等差(比)数列,能在O( ...
- 2011 ACM/ICPC 成都赛区(为2013/10/20成都现场赛Fighting)
hdu 4111 Alice and Bob 博弈:http://www.cnblogs.com/XDJjy/p/3350014.html hdu 4112 Break the Chocolate ...
- Hadoop基础教程之高级编程
从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成<key, value>. 2 ...
- 我们为什么需要DTO(数据传输对象)
原文:http://www.cnblogs.com/Gyoung/archive/2013/03/23/2977233.html DTO即数据传输对象(Data Transfer Object).之前 ...
- 299. Bulls and Cows
题目: You are playing the following Bulls and Cows game with your friend: You write down a number and ...
- servlet实现文件下载
之前没怎么用过这个,这次项目中用到了,于是总结一下: 应该说主要注意三方面: 1.写一个servlet 2.在web.xml中配置这个servlet 3.页面上调用这个servlet 第一: 写 ...
- CentOS 快速安装pip
python的很多组件都必须依靠pip来安装,比如elasticsearch驱动.postgres驱动 Python2.7以后的版本自带pip,centos6.5之前yum自带的python为2.6, ...
- Matlab多个Figure图合成一个Fig
案例:之前跑过的程序 已经生成了多个matlab图,现在需要进行合并到一个图中. 解决方案,利用图像句柄把figure图像中的参数读入到内存中,然后重新subplot绘制. 程序如下: clc;cle ...
- python中的类简单讲解
类似其它的语言, Python 中的函数使用小括号( () )调用.函数在调用之前必须先定义.如果函数中没有 return 语句, 就会自动返回 None 对象. Python 是通过引用调 ...