php让from背景变成半透明,php – imagecreatefrompng()使一个黑色的背景,而不是透明?...

我使用PHP和GD库缩略图,但我的代码将png透明度变成一个纯黑色,是否有解决方案来改善我的代码?

这是我的php缩略图制造商代码:

function cropImage($nw, $nh, $source, $stype, $dest) {

$size = getimagesize($source);

$w = $size[0];

$h = $size[1];

switch($stype) {

case 'gif':

$simg = imagecreatefromgif($source);

break;

case 'jpg':

$simg = imagecreatefromjpeg($source);

break;

case 'png':

$simg = imagecreatefrompng($source);

break;

}

$dimg = imagecreatetruecolor($nw, $nh);

$wm = $w/$nw;

$hm = $h/$nh;

$h_height = $nh/2;

$w_height = $nw/2;

if($w> $h) {

$adjusted_width = $w / $hm;

$half_width = $adjusted_width / 2;

$int_width = $half_width - $w_height;

imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);

} elseif(($w

$adjusted_height = $h / $wm;

$half_height = $adjusted_height / 2;

$int_height = $half_height - $h_height;

imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);

} else {

imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);

}

imagejpeg($dimg,$dest,100);

}

谢谢

在使用 PHP 的 `imagecreatefrompng` 和 `imagescale` 函数处理 PNG 图片时,可能会遇到背景透明变为黑色的问题。这是因为在处理图片时,默认的颜色填充设置可能会导致透明背景被填充为黑色。 要解决这个问题,可以使用 `imagecolortransparent` 和 `imagecolorallocatealpha` 函数来确保透明背景保持不变。以下是一个示例代码,展示了如何处理这种情况: ```php <?php // 创建一个图片资源 $image = imagecreatefrompng('path/to/your/image.png'); // 获取原始图片的宽度和高度 $width = imagesx($image); $height = imagesy($image); // 设置新的宽度和高度 $new_width = 200; $new_height = 200; // 创建一个新的图片资源 $new_image = imagecreatetruecolor($new_width, $new_height); // 启用透明背景 imagealphablending($new_image, false); imagesavealpha($new_image, true); $transparent = imagecolorallocatealpha($new_image, 0, 0, 0, 127); imagefilledrectangle($new_image, 0, 0, $new_width, $new_height, $transparent); // 缩放图片 imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); // 保存处理后的图片 imagepng($new_image, 'path/to/save/new_image.png'); // 释放内存 imagedestroy($image); imagedestroy($new_image); ?> ``` 在这个示例中,`imagealphablending` 和 `imagesavealpha` 函数用于确保透明背景保持不变。`imagecolorallocatealpha` 函数创建一个透明的填充颜色,并使用 `imagefilledrectangle` 函数填充新的图片资源,以确保透明背景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值