2013-11-12 5 views
1

Я не знаю, возможно ли это или нет.заполнить изображение другим градиентом image

У меня есть два изображения, одно изображение - градиент цвета, а другое изображение - прозрачное изображение с текстурой. Я хочу пополнить текстуру второго изображения с градиентным изображением. Я искал google и пытался с тем же примером, но не нашел решения.

Прозрачная текстура изображения:

Transparent texture image

Градиент цвета изображения:

Gradient color image

Полученное изображение:

final image

Пожалуйста, проигнорируйте черный фон окончательного изображения.

ответ

0

Это, как вы это делаете:

<?php 

$img1 = imagecreatefrompng('1.png'); 
$img2 = imagecreatefrompng('2.png'); 

$imgFinal = alphaOverlay($img1, $img2, 181, 181); 
header('Content-Type: image/png'); 
imagepng($imgFinal); 
imagedestroy($img1); 
imagedestroy($img2); 
imagedestroy($imgFinal); 

function alphaOverlay($destImg, $overlayImg, $imgW, $imgH) 
{ 
    for($y=0;$y<$imgH;$y++) 
    { 
     for($x=0;$x<$imgW;$x++) 
     { 
      $ovrARGB = imagecolorat($overlayImg, $x, $y); 
      $ovrA = ($ovrARGB >> 24) << 1; 
      $ovrR = $ovrARGB >> 16 & 0xFF; 
      $ovrG = $ovrARGB >> 8 & 0xFF; 
      $ovrB = $ovrARGB & 0xFF; 

      $change = false; 
      if($ovrA == 0) 
      { 
       $dstR = $ovrR; 
       $dstG = $ovrG; 
       $dstB = $ovrB; 
       $change = true; 
      } 
      elseif($ovrA < 254) 
      { 
       $dstARGB = imagecolorat($destImg, $x, $y); 
       $dstR = $dstARGB >> 16 & 0xFF; 
       $dstG = $dstARGB >> 8 & 0xFF; 
       $dstB = $dstARGB & 0xFF; 

       $dstR = (($ovrR * (0xFF-$ovrA)) >> 8) + (($dstR * $ovrA) >> 8); 
       $dstG = (($ovrG * (0xFF-$ovrA)) >> 8) + (($dstG * $ovrA) >> 8); 
       $dstB = (($ovrB * (0xFF-$ovrA)) >> 8) + (($dstB * $ovrA) >> 8); 
       $change = true; 
      } 
      if($change) 
      { 
       $dstRGB = imagecolorallocatealpha($destImg, $dstR, $dstG, $dstB, 0); 
       imagesetpixel($destImg, $x, $y, $dstRGB); 
      } 

     } 
    } 
    return $destImg; 
} 

?> 

выходы:

enter image description here

+0

Спасибо за ваш быстрый ответ. Но, извините, ваш результат не является моим требованием. Я думаю, вы не проверяли итоговое изображение, о котором идет речь, что требует выхода. –

+0

Да, он хочет точно противоположно. Изменение текстуры листьев. –

Смежные вопросы