首页 >后端开发 >PHP问题 >php怎么修改图片颜色

php怎么修改图片颜色

藏色散人
藏色散人原创
2021-09-19 09:54:363072浏览

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: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 PHP同时支持面向对象和面向过程的开发,使用上非常灵活。

推荐学习:《PHP视频教程

以上是php怎么修改图片颜色的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn