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 (PHP:ハイパーテキスト プリプロセッサ) は「ハイパーテキスト プリプロセッサ」で、サーバー側で実行されるスクリプト言語で、特に Web 開発に適しており、HTML に埋め込むことができます。 PHP構文はC言語を学習し、JavaやPerlという複数の言語の特徴を吸収して独自の構文を開発し、Javaのオブジェクト指向プログラミングなど、それぞれの強みをもとに改良を続けてきたのが主な目的です。この言語は元々、開発者が高品質の Web サイトを迅速に作成できるようにするために作成されました。 PHP はオブジェクト指向開発とプロセス指向開発の両方をサポートしており、非常に柔軟に使用できます。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPで写真の色を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。