Наложение маски на изображение
В редакторе
Наложение маски на изображение
Brain_Script
1133
2019-07-12 10:59:55
// исходная картинка
$image = "test.jpg";
// картинка маска
$mask = "mask.png";
// загружаем исходную картинку
$image = imagecreatefromjpeg($image);
// загружаем маску
$mask = imagecreatefrompng($mask);
// определяем ширину картинки
$width = imagesx($image);
// определяем высоту картинки
$height = imagesy($image);
// определяем ширину маски
$m_width = imagesx($mask);
// определяем высоту маски
$m_height = imagesy($mask);
// создаем холст для будущей картинки
$img = imagecreatetruecolor($width, $height);
// определяем прозрачный цвет для картинки. Черный
$transColor = imagecolorallocate($img, 0, 0, 0);
// задаем прозрачность для картинки
imagecolortransparent($img, $transColor);
// перебираем исходную картинку по пикселю
for($posX = 0; $posX < $width; $posX++){
for($posY = 0; $posY < $height; $posY++){
// получаем индекс цвета пикселя
// в координате $posX, $posY для картинки
$colorIndex = imagecolorat($image, $posX, $posY);
// получаем цвет по его индексу в формате RGB
$colorImage = imagecolorsforindex(
$image, $colorIndex
);
// получаем индекс цвета пикселя
// в координате $posX, $posY для маски
$colorIndex = imagecolorat($mask, $posX, $posY);
// получаем цвет по его индексу в формате RGB
$maskColor = imagecolorsforindex(
$mask, $colorIndex
);
// если в точке $posX, $posY цвет маски черный,
// то наносим на холст пиксель с нужным цветом
if (
// проверка пикселя на черный цвет
$maskColor['red'] == 0 AND
$maskColor['green'] == 0 AND
$maskColor['blue'] == 0 AND
// если размер маски меньше исходной картинки,
// то за ее пределами тоже ни чего не рисуем
$m_width > $posX AND
$m_height > $posY
){
// получаем цвет для пикселя
$colorIndex = imagecolorallocate(
$img,
$colorImage['red'],
$colorImage['green'],
$colorImage['blue']
);
// рисуем пиксель
imagesetpixel(
$img, $posX, $posY, $colorIndex
);
}
}
}
// заголовок для браузера
header('Content-type: image/png');
// выводим картинку в браузере
imagepng($img);
// чистим память
imagedestroy($img);
Войдите для добавления комментария.