ホームページ  >  記事  >  バックエンド開発  >  PHPで写真の色を変更する方法

PHPで写真の色を変更する方法

藏色散人
藏色散人オリジナル
2021-09-19 09:54:363047ブラウズ

PHP で画像の色を変更する方法: 1. PHP サンプル ファイルを作成します; 2. "img_replace_color('#000000','#f30145',"upload/001.png","upload/) を渡しますout.png");"メソッドで画像の色を置き換えることができます。

PHPで写真の色を変更する方法

#この記事の動作環境: 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 &#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:ハイパーテキスト プリプロセッサ) は「ハイパーテキスト プリプロセッサ」で、サーバー側で実行されるスクリプト言語で、特に Web 開発に適しており、HTML に埋め込むことができます。 PHP構文はC言語を学習し、JavaやPerlという複数の言語の特徴を吸収して独自の構文を開発し、Javaのオブジェクト指向プログラミングなど、それぞれの強みをもとに改良を続けてきたのが主な目的です。この言語は元々、開発者が高品質の Web サイトを迅速に作成できるようにするために作成されました。 PHP はオブジェクト指向開発とプロセス指向開発の両方をサポートしており、非常に柔軟に使用できます。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPで写真の色を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。