为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在实际处理当中,下面的代码值移除了白色,请教是怎么回事?

为什么在实际处理当中,下面的代码值移除了白色,请教是怎么回事?

PHP
DIEA 2023-04-16 18:14:47
把一张图片(根据指定的RGB颜色范围)透明化。$o_pic = '1.jpg';//要处理的色阶起始值$begin_r = 215;$begin_g = 215;$begin_b = 215; list($src_w,$src_h,$src_type) = getimagesize($o_pic);// 获取原图像信息$file_ext = get_ext($o_pic);//获取扩展名$target_im = imagecreatetruecolor($src_w,$src_h);//新图if($file_ext == 'jpg') //转换JPG 开始 {    $src_im = ImageCreateFromJPEG($o_pic);            imagecopymerge($target_im,$src_im,0,0,0,0,$src_w,$src_h,100);    for($x = 0; $x < $src_w; $x++)     {        for($y = 0; $y < $src_h; $y++)         {            $rgb = imagecolorat($src_im, $x, $y);            $r = ($rgb >> 16) & 0xFF;            $g = ($rgb >> 8) & 0xFF;            $b = $rgb & 0xFF;            if($r > $begin_r && $g > $begin_g && $b > $begin_b ){                    imagecolortransparent($target_im, imagecolorallocate($target_im,$r, $g, $b));                             }         }     } }
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

/**

 * Created by PhpStorm.

 * User: shellus

 * Date: 2016-12-01

 * Time: 23:12

 */

require 'vendor/autoload.php';

// import the Intervention Image Manager Class

use Intervention\Image\ImageManager;

// create an image manager instance with favored driver

$manager = new ImageManager(array('driver' => 'gd'));

$img =  $manager->make('1.jpg');

for ($y = 0; $y < $img->height(); $y++)

{

    for ($x = 0; $x < $img->width(); $x++)

    {

        $c = $img -> pickColor($x, $y, 'array');

        if(abs($c[0] - 205) < 50  && abs($c[1] - 223) < 50 && abs($c[2] - 211) < 50 ){

            $c[0] = $c[1] = $c[2] = 255;

            $img -> pixel($c, $x, $y);

        }

    }

}

$img -> save();


查看完整回答
反对 回复 2023-04-20
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

请不要用jpg,因为jpg不支持透明所以变白了,用imagecreatetruecolor或是imagecreatefrompng

查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信