function overlay(Image $img,$align=NULL,$alpha=100) {
		if (is_null($align))
			$align=self::POS_Right|self::POS_Bottom;
		if (is_array($align)) {
			list($posx,$posy)=$align;
			$align = 0;
		}
		$ovr=imagecreatefromstring($img->dump());
		imagesavealpha($ovr,TRUE);
		$imgw=$this->width();
		$imgh=$this->height();
		$ovrw=imagesx($ovr);
		$ovrh=imagesy($ovr);
		if ($align & self::POS_Left)
			$posx=0;
		if ($align & self::POS_Center)
			$posx=($imgw-$ovrw)/2;
		if ($align & self::POS_Right)
			$posx=$imgw-$ovrw;
		if ($align & self::POS_Top)
			$posy=0;
		if ($align & self::POS_Middle)
			$posy=($imgh-$ovrh)/2;
		if ($align & self::POS_Bottom)
			$posy=$imgh-$ovrh;
		if (empty($posx))
			$posx=0;
		if (empty($posy))
			$posy=0;
		if ($alpha==100)
			imagecopy($this->data,$ovr,$posx,$posy,0,0,$ovrw,$ovrh);
		else {
			$cut=imagecreatetruecolor($ovrw,$ovrh);
			imagecopy($cut,$this->data,0,0,$posx,$posy,$ovrw,$ovrh);
			imagecopy($cut,$ovr,0,0,0,0,$ovrw,$ovrh);
			imagecopymerge($this->data,
				$cut,$posx,$posy,0,0,$ovrw,$ovrh,$alpha);
		}
		return $this->save();
	}
function overlay(Image $img,$align=NULL,$alpha=100) {
		if (is_null($align))
			$align=self::POS_Right|self::POS_Bottom;
		if (is_array($align)) {
			list($posx,$posy)=$align;
			$align = 0;
		}
		$ovr=imagecreatefromstring($img->dump());
		imagesavealpha($ovr,TRUE);
		$imgw=$this->width();
		$imgh=$this->height();
		$ovrw=imagesx($ovr);
		$ovrh=imagesy($ovr);
		if ($align & self::POS_Left)
			$posx=0;
		if ($align & self::POS_Center)
			$posx=($imgw-$ovrw)/2;
		if ($align & self::POS_Right)
			$posx=$imgw-$ovrw;
		if ($align & self::POS_Top)
			$posy=0;
		if ($align & self::POS_Middle)
			$posy=($imgh-$ovrh)/2;
		if ($align & self::POS_Bottom)
			$posy=$imgh-$ovrh;
		if (empty($posx))
			$posx=0;
		if (empty($posy))
			$posy=0;
		if ($alpha==100)
			imagecopy($this->data,$ovr,$posx,$posy,0,0,$ovrw,$ovrh);
		else {
			$cut=imagecreatetruecolor($ovrw,$ovrh);
			imagecopy($cut,$this->data,0,0,$posx,$posy,$ovrw,$ovrh);
			imagecopy($cut,$ovr,0,0,0,0,$ovrw,$ovrh);
			imagecopymerge($this->data,
				$cut,$posx,$posy,0,0,$ovrw,$ovrh,$alpha);
		}
		return $this->save();
	}
function overlay ( Image $ img , $ align = NULL , $ alpha = 100 ) { if ( is_null ( $ align ) ) $ align = self :: POS_Right | self :: POS_Bottom ; if ( is_array ( $ align ) ) { list ( $ posx , $ posy ) = $ align ; $ align = 0 ; } $ ovr = imagecreatefromstring ( $ img -> dump ( ) ) ; imagesavealpha ( $ ovr , TRUE ) ; $ imgw = $ this -> width ( ) ; $ imgh = $ this -> height ( ) ; $ ovrw = imagesx ( $ ovr ) ; $ ovrh = imagesy ( $ ovr ) ; if ( $ align & self :: POS_Left ) $ posx = 0 ; if ( $ align & self :: POS_Center ) $ posx = ( $ imgw - $ ovrw ) / 2 ; if ( $ align & self :: POS_Right ) $ posx = $ imgw - $ ovrw ; if ( $ align & self :: POS_Top ) $ posy = 0 ; if ( $ align & self :: POS_Middle ) $ posy = ( $ imgh - $ ovrh ) / 2 ; if ( $ align & self :: POS_Bottom ) $ posy = $ imgh - $ ovrh ; if ( empty ( $ posx ) ) $ posx = 0 ; if ( empty ( $ posy ) ) $ posy = 0 ; if ( $ alpha == 100 ) imagecopy ( $ this -> data , $ ovr , $ posx , $ posy , 0 , 0 , $ ovrw , $ ovrh ) ; else { $ cut = imagecreatetruecolor ( $ ovrw , $ ovrh ) ; imagecopy ( $ cut , $ this -> data , 0 , 0 , $ posx , $ posy , $ ovrw , $ ovrh ) ; imagecopy ( $ cut , $ ovr , 0 , 0 , 0 , 0 , $ ovrw , $ ovrh ) ; imagecopymerge ( $ this -> data , $ cut , $ posx , $ posy , 0 , 0 , $ ovrw , $ ovrh , $ alpha ) ; } return $ this -> save ( ) ; }
Apply an image overlay
@return object
@param $img object
@param $align int|array
@param $alpha int
Apply an image overlay