2013-10-11 3 views
0

Во-первых: Я хочу создать изображение PNG и нарисовать внутри него фигуру.Что случилось с этим прозрачным генератором изображений PNG? Фон черный

Во-вторых: Перекройте первый PNG на другом изображении (например, изображение в формате jpg) Проблема заключается в следующем: когда я создаю первый PNG с внутренней формой (фон не прозрачный и темный), это делает черным перекрываются на втором изображении.

Как это исправить?

Я не так много работаю с функциями изображения, поэтому у меня возникли проблемы.

Примечания: Мне нужно создать первый прозрачный PNG, а затем наложить его на второе изображение. Я не хочу создавать форму непосредственно на втором изображении.

И Кодекс:

<?php 

    define('EXAMPLE_TMP_SERVERPATH', ''); 
    define('EXAMPLE_TMP_URLRELPATH', ''); 


    $tempDir = EXAMPLE_TMP_SERVERPATH; 
    $fileName = 'test3img.png'; 


    $imgW = 125; 
    $imgH = 125; 

    # First 
    $base_image = imagecreatetruecolor($imgW, $imgH); 

    $black = imagecolorallocate($base_image, 0, 0, 0); 
    imagecolortransparent($base_image, $black); 
    $col[0] = imagecolortransparent($base_image, $black); 

    imagealphablending($base_image, true); 
    imagesavealpha($base_image, true); 


    imagefill($base_image, 0, 0, $col[0]); 

    imagefilledrectangle($base_image, 4, 4, 50, 25, 255); 

    imagepng($base_image, $tempDir.$fileName); 


# First2 
$target_image = imagecreatetruecolor($imgW*5, $imgH*5); 
$black2 = imagecolorallocatealpha($base_image, 0, 0, 0, 127); 
imagecolortransparent($target_image, $black2); 

imagecopyresized($target_image, $base_image, 0, 0, 0, 0,$imgW, $imgH, $imgW, $imgH); 
imagedestroy($base_image); 
imagepng($target_image, $tempDir.$fileName); 
imagedestroy($target_image); 
# First2 

    # Second  
    $dest = imagecreatefromjpeg('../avatar.jpg'); 
    $src = imagecreatefrompng(EXAMPLE_TMP_URLRELPATH.$fileName); 


    imagealphablending($dest, true); 
    imagesavealpha($dest, true); 

    imagealphablending($src, true); 

    imagecopyresampled(
         $dest, 
         $src, 
         0,0, 
         0,0, 
         200, 200, 
         125, 125 
        ); 

    imagepng($dest, EXAMPLE_TMP_URLRELPATH.'_m.jpeg'); 

    imagedestroy($dest); 
    imagedestroy($src); 

?> 
+0

Кроме того, я хочу, чтобы сделать форму прозрачной слишком – OceanOne

ответ

1

Нужно добавить альфа-канал тоже: Alpha Channel

+0

вы можете мне помочь больше, пожалуйста? – OceanOne

+1

Изменить: $ black = imagecolorallocate ($ base_image, 0, 0, 0); to: $ black = imagecolorallocatealpha ($ base_image, 0, 0, 0, 127); Попробуйте это и вернитесь ко мне. –

+0

, которые работают для первого кода, я добавляю, но я забыл добавить часть кода и добавить его как часть first2. первая и вторая работали нормально. но после первого2 второй png не прозрачен и черный – OceanOne

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