2013-03-12 1 views
1

У меня есть файл png, и я хочу, чтобы часть этого изображения (прямоугольника) была прозрачной.PHP: Как установить часть файла png как прозрачную?

Forexample что-то вроде этого:

псевдокод:

<?php 
$path = 'c:\img.png'; 
set_image_area_transparent($path, $x, $y, $width, $height); 
?> 

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

Возможно ли использование некоторых библиотек в PHP?

ответ

1

Во-первых, вам нужно установить альфа-каналы для вашего изображения: http://www.php.net/manual/en/function.imagealphablending.php http://www.php.net/manual/en/function.imagesavealpha.php

Во-вторых, вам нужно установить прозрачный цвет для всех пикселей в вашей прозрачной области: http://www.php.net/manual/en/function.imagecolorset.php

1

Да, это возможно. Вы можете определить область изображения, заполнить ее цветом и затем установить этот цвет как прозрачный. Для этого требуется наличие GD libraries. Соответствующий manual for the command имеет этот код в примере:

<?php 
// Create a 55x30 image 
$im = imagecreatetruecolor(55, 30); 
$red = imagecolorallocate($im, 255, 0, 0); 
$black = imagecolorallocate($im, 0, 0, 0); 

// Make the background transparent 
imagecolortransparent($im, $black); 

// Draw a red rectangle 
imagefilledrectangle($im, 4, 4, 50, 25, $red); 

// Save the image 
imagepng($im, './imagecolortransparent.png'); 
imagedestroy($im); 
?> 

В вашем случае, вы бы существующий образ с respective function. результирующим ресурсом будет $ im в приведенном выше примере, тогда вы выделите цвет, установите его прозрачным и нарисуйте прямоугольник, как указано выше, затем сохраните изображение:

<?php 
// get the image form the filesystem 
$im = imagecreatefromjpeg($imgname); 
// let's assume there is no red in the image, so lets take that one 
$red = imagecolorallocate($im, 255, 0, 0); 

// Make the red color transparent 
imagecolortransparent($im, $red); 

// Draw a red rectangle in the image 
imagefilledrectangle($im, 4, 4, 50, 25, $red); 

// Save the image 
imagepng($im, './imagecolortransparent.png'); 
imagedestroy($im); 
?> 

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

  • Нет связанных вопросов^_^