php如何修改图片颜色,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
php修改图片颜色的方法:1、创建一个PHP示例文件;2、通过“img_replace_color('#000000','#f30145',"upload/001.png","upload/out.png");”方法替换图片中的颜色即可。
本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。
php怎么修改图片颜色?
php 替换图片中像素的颜色
替换图片中的某个颜色为另一个颜色
其中其他颜色也会处理 可自行去掉只替换正色亦可
背景透明 背景白色均为不处理
//替换图片中的颜色 //img_replace_color('#000000','#f30145',"upload/001.png","upload/out.png" ); //255,255,255,127透明 0000黑 255,255,255,0白 [103,103,103,0 36,36,36,0灰色] function img_replace_color($seachcolor,$replacecolor,$file,$outfile=''){ $im=imagecreatefrompng($file); $newim = imagecreatetruecolor(imagesx($im), imagesy($im));//创建画布 imagesavealpha($newim, true); //背景透明 $background = imagecolorallocatealpha($newim, 255, 255, 255,127); imagefill($newim,0,0,$background);//背景透明 for ($y=0;$y<imagesy($im);$y++){ for ($x=0;$x<imagesx($im);$x++) { $rgb = imagecolorat($im,$x,$y); $rgba = imagecolorsforindex ($im, $rgb); //echo '['.$rgba['red'].','.$rgba['green'].','.$rgba['blue'].','.$rgba['alpha'].',' .rgb2hex('rgb('.$rgba['red'].','.$rgba['green'].','.$rgba['blue'].')') .']'; //替换颜色 $s_colr = hex2rgb($seachcolor); $r_colr = hex2rgb($replacecolor); if($rgba['red']==$s_colr['r'] && $rgba['green']==$s_colr['g'] && $rgba['blue']==$s_colr['b'] ){ $rgba['red'] = $r_colr['r']; $rgba['green'] = $r_colr['g']; $rgba['blue'] = $r_colr['b']; }elseif($rgba['red']==255 && $rgba['green']==255 && $rgba['blue']==255 && $rgba['alpha']==127){ }elseif($rgba['red']==255 && $rgba['green']==255 && $rgba['blue']==255 && $rgba['alpha']==0){ }elseif($rgba['alpha']!=0){ }else{ //计算颜色 $rgba['red'] = $rgba['red']+ ( (255-$rgba['red'])*$r_colr['r'] /255);//echo '【'.$s_colr['r'].'-'.$r_colr['r'].'-'.$rgba['red'].'】'; $rgba['green'] = $rgba['green']+ ( (255-$rgba['green'])*$r_colr['g'] /255); $rgba['blue'] = $rgba['blue']+ ( (255-$rgba['blue'])*$r_colr['b'] /255); } $color = imagecolorallocatealpha($newim, $rgba['red'], $rgba['green'], $rgba['blue'], $rgba['alpha']); imagesetpixel($newim, $x, $y, $color);//一个像素放入画布 } //echo '<hr>'; } if($outfile){ imagepng($newim , $outfile ); imagedestroy($newim); }else{ return $newim; } } /** * RGB转 十六进制 * @param $rgb RGB颜色的字符串 如:rgb(255,255,255); * @return string 十六进制颜色值 如:#FFFFFF */ function rgb2hex($rgb){ $regexp = "/^rgb\(([0-9]{0,3})\,\s*([0-9]{0,3})\,\s*([0-9]{0,3})\)/"; $re = preg_match($regexp, $rgb, $match); $re = array_shift($match); $hexColor = "#"; $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'); for ($i = 0; $i < 3; $i++) { $r = null; $c = $match[$i]; $hexAr = array(); while ($c > 16) { $r = $c % 16; $c = ($c / 16) >> 0; array_push($hexAr, $hex[$r]); } array_push($hexAr, $hex[$c]); $ret = array_reverse($hexAr); $item = implode('', $ret); $item = str_pad($item, 2, '0', STR_PAD_LEFT); $hexColor .= $item; } return $hexColor; } /** * 十六进制 转 RGB */ function hex2rgb($hexColor) { $color = str_replace('#', '', $hexColor); if (strlen($color) > 3) { $rgb = array( 'r' => hexdec(substr($color, 0, 2)), 'g' => hexdec(substr($color, 2, 2)), 'b' => hexdec(substr($color, 4, 2)) ); } else { $color = $hexColor; $r = substr($color, 0, 1) . substr($color, 0, 1); $g = substr($color, 1, 1) . substr($color, 1, 1); $b = substr($color, 2, 1) . substr($color, 2, 1); $rgb = array( 'r' => hexdec($r), 'g' => hexdec($g), 'b' => hexdec($b) ); } return $rgb; }
关于php如何修改图片颜色问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。