Maison >développement back-end >Problème PHP >Comment changer la couleur des images en php
Comment modifier la couleur de l'image en PHP : 1. Créez un exemple de fichier PHP ; 2. Passez "img_replace_color('#000000','#f30145',"upload/001.png","upload/out.png") ; "Méthode pour remplacer la couleur dans l'image.
L'environnement d'exploitation de cet article : système Windows 7, PHP7.1, ordinateur Dell G3.
Comment changer la couleur des images en php ?
php remplace la couleur des pixels de l'image
remplace une certaine couleur de l'image par une autre couleur
D'autres couleurs seront également traitées et peuvent être supprimées par vous-même. Seule la couleur positive peut être remplacée
. Le fond est transparent et le fond blanc n'est pas traité
//替换图片中的颜色 //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; }
Introduction connexe :
PHP (PHP : Hypertext Preprocessor) est un "préprocesseur hypertexte". C'est un langage de script exécuté côté serveur. Il est particulièrement adapté au Web. développement et peut être intégré dans HTML. La syntaxe PHP a appris le langage C, a absorbé les fonctionnalités de plusieurs langages Java et Perl pour développer sa propre syntaxe unique et a continué à s'améliorer en fonction de leurs points forts, tels que la programmation orientée objet de Java. Le langage a été créé à l'origine pour permettre aux développeurs de rédiger rapidement des sites Web de haute qualité. PHP prend en charge le développement orienté objet et orienté processus et est très flexible dans son utilisation.
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!