PHP로 이미지 색상을 수정하는 방법: 1. PHP 샘플 파일을 생성합니다. 2. "img_replace_color('#000000','#f30145',"upload/001.png","upload/out.png")를 전달합니다. ; "그림의 색상을 바꾸는 방법입니다.
이 문서의 운영 환경: Windows 7 시스템, 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(PHP: Hypertext Preprocessor)는 "하이퍼텍스트 전처리기"입니다. 특히 웹에 적합합니다. 개발이 가능하며 HTML에 포함될 수 있습니다. PHP 구문은 C 언어를 배우고, Java와 Perl 등 여러 언어의 특성을 흡수하여 고유한 구문을 개발하고, Java의 객체지향 프로그래밍 등 그 장점을 바탕으로 지속적으로 개선하는 것을 주요 목표로 합니다. 이 언어는 원래 개발자가 고품질 웹 사이트를 빠르게 작성할 수 있도록 만들어졌습니다. PHP는 객체 지향 개발과 프로세스 지향 개발을 모두 지원하며 사용이 매우 유연합니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP에서 사진의 색상을 변경하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!