2017-12-08 10 views
-1

質問したいのですが、最初の画像をどのようにして2番目の画像にするのですか? という意味でバックグラウンドの最初のイメージは透明ではなく、イメージ上で透明に変わるのは2番目のイメージのようになりますか? どのようにPHPでやっていますか?私は本当に 画像が透明でないため、画像が透明ではありません

を知らない あなたは

enter image description here

enter image description here

+0

イメージ操作はあなたのように聞こえますか? http://imagine.readthedocs.io/en/latest/index.html良いPHP画像manpiライブラリを見てください。 Codeigniterには1つの機能が組み込まれていますが、探している機能を実行できない可能性があります。 https://www.codeigniter.com/userguide3/libraries/image_lib.html – Danny

答えて

0

あなたが唯一の画像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.

このコードはカラー画像でも機能しますが、画像全体が半透明になります。黒を除く