引言
准备工作
在开始之前,请确保你的服务器上已安装PHP和GD库。GD库是PHP中处理图像的一个扩展,可以实现图像的缩放、裁剪、添加文字等功能。
方法一:使用GD库将PNG图片背景变为透明
function pngToTransparent($sourceImage, $outputImage) {
// 获取原图像信息
list($width, $height) = getimagesize($sourceImage);
// 创建一个新的图片资源
$srcImage = imagecreatefrompng($sourceImage);
// 设置透明颜色
$transparentColor = imagecolorallocatealpha($srcImage, 255, 255, 255, 127);
// 创建一个白色透明的画布
imagecolortransparent($srcImage, $transparentColor);
// 裁剪掉白色背景
$newImage = imagecreatetruecolor($width, $height);
imagealphablending($newImage, false);
imagesavealpha($newImage, true);
imagefill($newImage, 0, 0, imagecolorallocatealpha($newImage, 255, 255, 255, 0));
// 合成图片
imagecopy($newImage, $srcImage, 0, 0, 0, 0, $width, $height);
// 输出或保存图片
imagepng($newImage, $outputImage);
// 释放内存
imagedestroy($srcImage);
imagedestroy($newImage);
}
pngToTransparent('source.png', 'output.png');
方法二:使用GD库将GIF图片背景变为透明
function gifToTransparent($sourceImage, $outputImage) {
// 获取原图像信息
list($width, $height) = getimagesize($sourceImage);
// 创建一个新的图片资源
$srcImage = imagecreatefromgif($sourceImage);
// 创建一个白色透明的画布
$newImage = imagecreatetruecolor($width, $height);
imagealphablending($newImage, true);
imagesavealpha($newImage, true);
// 裁剪掉白色背景
imagefill($newImage, 0, 0, imagecolorallocatealpha($newImage, 255, 255, 255, 127));
// 合成图片
imagecopy($newImage, $srcImage, 0, 0, 0, 0, $width, $height);
// 输出或保存图片
imagegif($newImage, $outputImage);
// 释放内存
imagedestroy($srcImage);
imagedestroy($newImage);
}
方法三:使用ImageMagick库实现图片背景透明化
除了GD库,PHP还可以使用ImageMagick库来处理图像。以下是一个使用ImageMagick库的示例:
function imageMagickTransparent($sourceImage, $outputImage) {
// 加载图片
$image = new Imagick($sourceImage);
// 设置透明背景
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_SET);
$image->setAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE);
// 裁剪掉白色背景
$image->cropimage(0, 0, $image->getImageWidth(), $image->getImageHeight());
// 输出或保存图片
$image->writeImage($outputImage);
// 释放内存
$image->clear();
$image->destroy();
}