做站点时,通常要将图片缩小成合适的尺寸,jpg图片缩小比较容易,png图片如果带了透明色的话,按照jpg的方式来缩小的话,就会造成透明色损失。那么如何处理,才能保存透明色呢?
主要是利用gd库的两个方法:
imagecolorallocatealpha 分配颜色 + alpha
imagesavealpha 设置在保存 png 图像时保存完整的 alpha 通道信息
@H_403_6@ /** * PHP缩放png图片时保持透明度的代码 * * @param * @arrange 512-笔记网: 512Pic.com **/ //获取源图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,127); imagefill($newImg,$alpha); //将源图拷贝到新图上,并设置在保存 PNG 图像时保存完整的 alpha 通道信息 imagecopyresampled($newImg,$srcImg,$newWidth,$newHeight,$srcWidth,$srcHeight); imagesavealpha($newImg,true); imagepng($newImg,'./dst.png'); /*** 来自编程之家 jb51.cc(jb51.cc) ***/