2015-06-15 4 views
0

Я хочу заменить прозрачные пиксели изображения на маску, я использую эту функцию, но я продолжаю получать ошибки.Маска над изображением

Когда я пытаюсь:

<?php 

function image_mask($src, $mask) 
{ 


imagesavealpha($src, true); 
imagealphablending($src, false); 
// scan image pixels 
// imagesx = get image width 
for ($x = 0; $x < imagesx($src); $x++) { 
    // imagesy = get image height 
    for ($y = 0; $y < imagesy($src); $y++) { 
     $mask_pix = imagecolorat($mask,$x,$y); 
     //return r,g,b,alpha 
     $mask_pix_color = imagecolorsforindex($mask, $mask_pix); 
     if ($mask_pix_color['alpha'] < 127) { 
      $src_pix = imagecolorat($src,$x,$y); 
      $src_pix_array = imagecolorsforindex($src, $src_pix); 
      imagesetpixel($src, $x, $y, imagecolorallocatealpha($src, $src_pix_array['red'], $src_pix_array['green'], $src_pix_array['blue'], 127 - $mask_pix_color['alpha'])); 
     } 
    } 
} 

} 
image_mask('source.png', 'mask.png'); 

?> 

я получаю следующие ошибки:

Warning: imagesavealpha() expects parameter 1 to be resource, string given in ... on line 7 

Warning: imagealphablending() expects parameter 1 to be resource, string given in ... on line 8 

Warning: imagesx() expects parameter 1 to be resource, string given in ... on line 11 

Я попытался добавить imageCreateFromPng и header('Content-Type: image/png'); к изображениям, но потом я просто получаю пустую страницу.

ответ

-1

«imagesavealpha() ожидает параметр 1, чтобы быть ресурсом, строка, заданный» Указанные Вами пары 1 из imagesavealpha неправильно, это нужно ресурс, ресурс может imagecreatetruecolor/imagecreatefrompng создать

+0

Я попытался добавить imagecreatefrompng, но затем я получу пустую белую страницу. – Keith666

0

я не знаю, что результат, который вы хотите получить, и я чувствую, что показ страницы неверен. вы можете попробовать запустить программу

<?php 

header('Content-Type: image/png'); 

function image_mask(&$src, &$mask) 
{ 

    imagesavealpha($src, true); 
    imagealphablending($src, false); 
    // scan image pixels 
    // imagesx = get image width 
    for ($x = 0; $x < imagesx($src); $x++) { 
     // imagesy = get image height 
     for ($y = 0; $y < imagesy($src); $y++) { 
      $mask_pix = imagecolorat($mask,$x,$y); 
      //return r,g,b,alpha 
      $mask_pix_color = imagecolorsforindex($mask, $mask_pix); 
      if ($mask_pix_color['alpha'] < 127) { 
       $src_pix = imagecolorat($src,$x,$y); 
       $src_pix_array = imagecolorsforindex($src, $src_pix); 
       imagesetpixel($src, $x, $y, imagecolorallocatealpha($src, $src_pix_array['red'], $src_pix_array['green'], $src_pix_array['blue'], 127 - $mask_pix_color['alpha'])); 
      } 
     } 
    } 

} 

$src = imagecreatefrompng('source.png'); 
$mask = imagecreatefrompng('mask.png'); 

image_mask($src, $mask); 

imagepng($src); 

imagedestroy($src); 
imagedestroy($mask); 

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