-1
質問したいのですが、最初の画像をどのようにして2番目の画像にするのですか? という意味でバックグラウンドの最初のイメージは透明ではなく、イメージ上で透明に変わるのは2番目のイメージのようになりますか? どのようにPHPでやっていますか?私は本当に 画像が透明でないため、画像が透明ではありません
を知らない あなたは質問したいのですが、最初の画像をどのようにして2番目の画像にするのですか? という意味でバックグラウンドの最初のイメージは透明ではなく、イメージ上で透明に変わるのは2番目のイメージのようになりますか? どのようにPHPでやっていますか?私は本当に 画像が透明でないため、画像が透明ではありません
を知らない あなたはあなたが唯一の画像B & Wがあれば、それは休憩中に全画素で白が可能です感謝します。
<?php
$url = "IUWBw.jpg";
$image = imagecreatefromjpeg($url);//get your image
//get size
$width = imagesx($image);
$height = imagesy($image);
//create new image
$out = ImageCreateTrueColor($width,$height);
//configuration for make alpha color
imagealphablending($out,false);
imagesavealpha($out, true);
for($x = $width-1;$x>=0;$x--){
for($y = $height-1;$y>=0;$y--){
$rgb = imagecolorat($image,$x,$y);//get pixel color of original image
$r = $rgb >> 16;
$g = ord(chr($rgb >> 8));
$b = ord(chr($rgb));
if($rgb != 0){ //if pixel is not black
//if red is the low color
if($r<$g && $r < $b){
$alpha = ($r/2);
$g-=$r;$b-=$r; $r=0;
}
//if green is the low color
if($g<$r && $g < $b){
$alpha = ($g/2);
$r-=$g;$b-=$g;$g=0;
}
//if blue is the low color
if($b<$r && $b < $g){
$alpha =($b/2);
$r-=$b; $g-=$b;$b=0;
}
//if we all have equal value
if($b == $r && $b == $g){
$alpha = ($b/2);
$r-=$b; $g-=$b;$b=0;
}
$color = $alpha << 24 | $r << 16 | $g << 8 | $b;
imagesetpixel($out,$x,$y,$color);
}else{//else is black just write
imagesetpixel($out,$x,$y,$rgb);
}
}
}
$urlout = preg_replace("#(.+).jpe?g#i","$1.png",$url);
imagepng($out,$urlout);
echo "image writeted: ".$urlout;
imagedestroy($out);
imagedestroy($image);
?>
このコードは、1つのピクセルの低い値を探し、それを他の値から引きます。
例:値がr:255 g:226 b:255になるようなピクセル
彼はr:29 g:0 b:29に変換します。
ピクセルが白で値を持たないようになったので、適切なアルファを入れます。 'g'の値は変換前に2で除算されます。アルファが255ではなく127の値をサポートするため、2で割ります。 a = g/2 = 226/2 = 113.
このコードはカラー画像でも機能しますが、画像全体が半透明になります。黒を除く
イメージ操作はあなたのように聞こえますか? http://imagine.readthedocs.io/en/latest/index.html良いPHP画像manpiライブラリを見てください。 Codeigniterには1つの機能が組み込まれていますが、探している機能を実行できない可能性があります。 https://www.codeigniter.com/userguide3/libraries/image_lib.html – Danny