GD или imagemagick. Как вырезать многоугольник из изображения?
Эмм… сота это шестиугольник. :)
Можно попробовать сделать как-то так:
1. Копируем прямоугольник, описывающий нужный нам многоугольник, и вставляем во временное изображение.
2. Вычисляем области, которые нужно срезать, формируем из них треугольники.
3. Заливаем эти треугольники прозрачным цветом.
4. Получившийся шестиугольник копируем (в виде прямоугольника) и вставляем в другую картинку.
Для GD можно использовать заранее подготовленную маску в png файле. Вот код из класса для наложения одного изображения на другого. От параметра blend зависит как будет накладываться — копироваться альфа-канал, или накладываться используя его.
/*
	mask($mask)
	Описание:	Накладывает на исходное изображение, второе в центр.
	Аргументы:
		mask	- второе изображение
		align	- выравнивание маски
		blend	- режим наложения прозрачности маски
	Возвращает:	итоговое изображение
*/
public function mask($mask, $align=0, $blend=true)
{
	$out = imagecreatetruecolor($this->w, $this->h);
	imagealphablending($out, false);
	imagecopy($out, $this->img, 0, 0, 0, 0, $this->w, $this->h);
	imagealphablending($out, $blend);
		
	// выравнивание
	$posx = ($align & self::AGN_L) ? 0 : (($align & self::AGN_R) ? $this->w - $mask->w : ($this->w - $mask->w)>>1);
	$posy = ($align & self::AGN_T) ? 0 : (($align & self::AGN_B) ? $this->h - $mask->h : ($this->h - $mask->h)>>1);
	
	imagecopy($out, $mask->img, $posx, $posy, 0, 0, $mask->w, $mask->h);
	return $out;
}
