douchilian1009 2018-03-04 20:58
浏览 99
已采纳

php - 设置图像中每个像素的alpha

I want to set the alpha of each pixel in image using php gd functions.

So far i have this:

$src = imagecreatefrompng('image.png');

$w = imagesx($src);
$h = imagesy($src);

$alpha = 204;

for ($x = 0; $x < $w; $x++) {
    for ($y = 0; $y < $h; $y++) {
        // set $alpha for each pixel in $src
    }
}

imagepng($src);
imagedestroy($src);
  • 写回答

1条回答 默认 最新

  • duanmei1350 2018-03-04 21:12
    关注

    Alpha have to be defined into 0 and 127. Then you have to use imagealphablending() and imagesavealpha() to save and use alpha.

    $src = imagecreatefrompng('image.png');
    
    imagealphablending($src, false);
    imagesavealpha($src, true);
    
    $w = imagesx($src);
    $h = imagesy($src);
    
    $alpha = round(204/255*127); // convert to [0-127]
    
    for ($x = 0; $x < $w; $x++) {
        for ($y = 0; $y < $h; $y++) {
    
            // get current color (R, G, B)
            $rgb = imagecolorat($src, $x, $y);
            $r = ($rgb >> 16) & 0xff;
            $g = ($rgb >> 8) & 0xff;
            $b = $rgb & 0xf;
    
            // create new color
            $col = imagecolorallocatealpha($src, $r, $g, $b, $alpha);
    
            // set pixel with new color
            imagesetpixel($src, $x, $y, $col);
        }
    }
    imagepng($src);
    imagedestroy($src);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多