php缩小png图片不损失透明色的解决方法

 png图片如果带了透明色按照jpg的方式来缩小,就会造成透明色损失。那么如何处理才能保存透明色呢?下面的代码就可以解决这个问题 

主要是利用gd库的两个方法:
 
代码如下:
imagecolorallocatealpha //分配颜色 + alpha
 
imagesavealpha //设置在保存 png 图像时保存完整的 alpha 通道信息
 
 
 
代码示例:
 
代码如下:
//获取源图gd图像标识符
$srcImg = imagecreatefrompng('./src.png');
$srcWidth = imagesx($srcImg);
$srcHeight = imagesy($srcImg);
 
//创建新图
$newWidth = round($srcWidth / 2);
$newHeight = round($srcHeight / 2);
$newImg = imagecreatetruecolor($newWidth, $newHeight);
//分配颜色 + alpha,将颜色填充到新图上
$alpha = imagecolorallocatealpha($newImg, 0, 0, 0, 127);
imagefill($newImg, 0, 0, $alpha);
 
//将源图拷贝到新图上,并设置在保存 PNG 图像时保存完整的 alpha 通道信息
imagecopyresampled($newImg, $srcImg, 0, 0, 0, 0, $newWidth, $newHeight, $srcWidth, $srcHeight);
imagesavealpha($newImg, true);
imagepng($newImg, './dst.png');
 
 

时间: 2024-11-01 02:45:41

php缩小png图片不损失透明色的解决方法的相关文章

php缩小png图片不损失透明色的解决方法_php实例

主要是利用gd库的两个方法: 复制代码 代码如下: imagecolorallocatealpha //分配颜色 + alpha imagesavealpha //设置在保存 png 图像时保存完整的 alpha 通道信息 代码示例: 复制代码 代码如下: //获取源图gd图像标识符$srcImg = imagecreatefrompng('./src.png');$srcWidth = imagesx($srcImg);$srcHeight = imagesy($srcImg); //创建新图

jquery解决ie6中图片过大导致错位解决方法

jquery解决ie6中图片过大导致错位解决方法 在产品展示页面中用jqurey控制下: /*这个标签调用产品图片*/ <asp教程:image runat="server" id="productbigimg" /> 首先引入jquery <script src="/utility/js/jquery.js" type="text/网页特效"></script> <script ty

PHP文件生成的图片无法使用CDN缓存的解决方法

  这篇文章主要介绍了PHP文件生成的图片无法使用CDN缓存的解决方法,这里的PHP生成图片是指src地址是一个PHP文件的图片,如果不做CDN,服务器的压力会非常大,本文就讲解了如何加进CDN的方法,需要的朋友可以参考下 今天发现线上有个问题,线上一个图片域名,在前端已经加了CDN缓存,不落缓存,则用PHP动态实现图片缩放,但经PHP处理过的图片输出后,每次都要从后端读取,后端服务器压力瞬间增加,经分析,PHP中没有作304的处理, HTTP的原理是这样的,每次请求到服务器后,服务端检测有没有

win7系统找不到图片预览功能的解决方法

  win7系统找不到图片预览功能的解决方法 1.不管设置什么视图模式,或者有没有打开预览功能.都是看不到预览效果的; 2.首先,打开计算机,或者随便一个文件夹,点击:工具-文件夹选项; 3. 点击查看栏,然后会看到很多功能复选框的.一般来说,这样设置后,视图模式设置为大图标或者超大图标可以预览了; 4.如果不是大图标或者越大图标的话,打开预览窗口也是可以看到; 5.有些朋友反映说不行,如果没效果的话,那有可能是你的系统盘空间不足造成的; 另外,如果你想在中等图标.平铺及内容视图下也可以预览的话

C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法_C#教程

本文实例讲述了C# WinForm控件对透明图片重叠时出现图片不透明的简单解决方法.分享给大家供大家参考,具体如下: 在Winform中如果将一个透明图片放在窗体上能正常显示透明,但是如果将该图片放在另一个控件上会导致不能显示透明效果. 解决这种情况,可以采取在控件上使用GDI+绘画出透明图片. 这里我们就以一个pictureBox2控件上面重叠一张png透明图片为例: 我们只需要给pictureBox2控件添加Paint事件,然后对png透明图片进行绘制即可,代码如下: private voi

Jquery修改image的src属性,图片不加载问题的解决方法_jquery

1. 当点击某一按钮的时候,把图片域中的图片改变一下 <img id="randimg" src="/servlet/CreateValidateNum" width="60" height="20" /> <span style="cursor:hand" onclick="reflush();return false;">看不清</span> &l

PHP CURL采集百度搜寻结果图片不显示问题的解决方法

1.根据关键字采集百度搜寻结果 根据关键字采集百度搜寻结果,可以使用curl实现,代码如下: <?php function doCurl($url, $data=array(), $header=array(), $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_R

PHP中如何缩小png图片并且保留透明色

将图片缩成合适的尺寸,jpg图片缩小比较容易,png图片如果带了透明色,按jpg方式来缩小,会造成透明色丢失. 保存透明色主要利用gd库的两个方法: imagecolorallocatealpha 分配颜色 + alpha imagesavealpha 设置在保存png图像时保存完整的 alpha 通道信息 代码如下: //获取源图gd图像标识符 $srcImg = imagecreatefrompng('./source.png'); $srcWidth = imagesx($srcImg);

jpg图片打不开的解决方法

jpg图片突然打不开怎么办,大家是否有遇到过呢?图片在相机上都可以查看浏览,传到电脑上后,有部分图片打不开了,缩略图方式查看时,只显示图标,不显示图片内容.用"图片查看传真器"查看时显示"没有预览",用ACDSee查看,一片黑色,用PHOTOR打开,显示如下图片中的提示: 遇到这个问题该如何解决.如下是jpg图片打不开的几种解决方法: 1.把JPEG图片复制到电脑,然后用画图打开. 2.另存为BMP格式. 3.用PHOTOSHOP打开. 用windows自带的画图来