>  기사  >  백엔드 개발  >  PHP에서 사진의 색상을 변경하는 방법

PHP에서 사진의 색상을 변경하는 방법

藏色散人
藏色散人원래의
2021-09-19 09:54:363048검색

PHP로 이미지 색상을 수정하는 방법: 1. PHP 샘플 파일을 생성합니다. 2. "img_replace_color('#000000','#f30145',"upload/001.png","upload/out.png")를 전달합니다. ; "그림의 색상을 바꾸는 방법입니다.

PHP에서 사진의 색상을 변경하는 방법

이 문서의 운영 환경: 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 &#39;[&#39;.$rgba[&#39;red&#39;].&#39;,&#39;.$rgba[&#39;green&#39;].&#39;,&#39;.$rgba[&#39;blue&#39;].&#39;,&#39;.$rgba[&#39;alpha&#39;].&#39;,&#39; .rgb2hex(&#39;rgb(&#39;.$rgba[&#39;red&#39;].&#39;,&#39;.$rgba[&#39;green&#39;].&#39;,&#39;.$rgba[&#39;blue&#39;].&#39;)&#39;) .&#39;]&#39;;

			//替换颜色
			$s_colr = hex2rgb($seachcolor);
			$r_colr = hex2rgb($replacecolor);
			if($rgba[&#39;red&#39;]==$s_colr[&#39;r&#39;] && $rgba[&#39;green&#39;]==$s_colr[&#39;g&#39;] && $rgba[&#39;blue&#39;]==$s_colr[&#39;b&#39;]  ){
				$rgba[&#39;red&#39;] = $r_colr[&#39;r&#39;];
				$rgba[&#39;green&#39;] = $r_colr[&#39;g&#39;];
				$rgba[&#39;blue&#39;] = $r_colr[&#39;b&#39;];
			}elseif($rgba[&#39;red&#39;]==255 && $rgba[&#39;green&#39;]==255 && $rgba[&#39;blue&#39;]==255 && $rgba[&#39;alpha&#39;]==127){
			}elseif($rgba[&#39;red&#39;]==255 && $rgba[&#39;green&#39;]==255 && $rgba[&#39;blue&#39;]==255 && $rgba[&#39;alpha&#39;]==0){
			}elseif($rgba[&#39;alpha&#39;]!=0){
			}else{
				//计算颜色
				$rgba[&#39;red&#39;] = $rgba[&#39;red&#39;]+ ( (255-$rgba[&#39;red&#39;])*$r_colr[&#39;r&#39;]  /255);//echo &#39;【&#39;.$s_colr[&#39;r&#39;].&#39;-&#39;.$r_colr[&#39;r&#39;].&#39;-&#39;.$rgba[&#39;red&#39;].&#39;】&#39;;
				$rgba[&#39;green&#39;] = $rgba[&#39;green&#39;]+ ( (255-$rgba[&#39;green&#39;])*$r_colr[&#39;g&#39;]  /255);
				$rgba[&#39;blue&#39;] = $rgba[&#39;blue&#39;]+ ( (255-$rgba[&#39;blue&#39;])*$r_colr[&#39;b&#39;]  /255);
			}

			$color = imagecolorallocatealpha($newim, $rgba[&#39;red&#39;], $rgba[&#39;green&#39;], $rgba[&#39;blue&#39;], $rgba[&#39;alpha&#39;]);


			imagesetpixel($newim, $x, $y, $color);//一个像素放入画布
		}
		//echo &#39;<hr>&#39;;
	}

	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(&#39;0&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;F&#39;);
	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(&#39;&#39;, $ret);
		$item = str_pad($item, 2, &#39;0&#39;, STR_PAD_LEFT);
		$hexColor .= $item;
	}
	return $hexColor;
}
/**
 * 十六进制 转 RGB
 */
function hex2rgb($hexColor) {
	$color = str_replace(&#39;#&#39;, &#39;&#39;, $hexColor);
	if (strlen($color) > 3) {
		$rgb = array(
			&#39;r&#39; => hexdec(substr($color, 0, 2)),
			&#39;g&#39; => hexdec(substr($color, 2, 2)),
			&#39;b&#39; => 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(
			&#39;r&#39; => hexdec($r),
			&#39;g&#39; => hexdec($g),
			&#39;b&#39; => hexdec($b)
		);
	}
	return $rgb;
}

관련 소개:

PHP(PHP: Hypertext Preprocessor)는 "하이퍼텍스트 전처리기"입니다. 특히 웹에 적합합니다. 개발이 가능하며 HTML에 포함될 수 있습니다. PHP 구문은 C 언어를 배우고, Java와 Perl 등 여러 언어의 특성을 흡수하여 고유한 구문을 개발하고, Java의 객체지향 프로그래밍 등 그 장점을 바탕으로 지속적으로 개선하는 것을 주요 목표로 합니다. 이 언어는 원래 개발자가 고품질 웹 사이트를 빠르게 작성할 수 있도록 만들어졌습니다. PHP는 객체 지향 개발과 프로세스 지향 개발을 모두 지원하며 사용이 매우 유연합니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 사진의 색상을 변경하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.