Image modul bővítése

aideluxe képe

Üdv!

Az Image modult szeretném bővíteni pár képmanipulálási függvénnyel(egyszerű küszöbölés és hasonló). És még ilyet nem csináltam.

Ahogy keresgettem drupal api-ba láttam, hogy pl egy kép skálzása úgy néz ki, hogy van az image.modul-ba egy ilyen hívás:
 $status = image_scale($original_path, $destination, $size['width'], $size['height']);

ami az includes/image.inc-be meghívja az image_scale függvényt, ami egy további hívást csinál, attól függően, hogy milyen gd van. Ami mellesleg így történik:

 return image_toolkit_invoke('resize', array($source, $destination, $width, $height));

Az világos, hogy az image_toolkit_invoke megfogja hívni az images.gd.inc-ben lévő image_gd_resize függvényt és átadja a megfelelő paramétereket.

Először úgy próbáltam, hogy az előbb említett includeokba beillesztettem a kódjaimat a megfelelő helyekre és úgy nem működött.

1. kérdés: Ez miért lehet?

Ragaszkodnék ehhez a megoldáshoz, mert utána, hogy hogyan kerül a kép a megfelelő helyre arra nem sikerült rá jönnöm. De ha valaki megtudja mondani, akkor lehet csak írnék egy függvényt az Image modulba és azon belül hívnám azt.

2. kérdés: Hogyan tudnám kiegészíteni ezeket az includeokat core hack nélkül?

De lehet az is, hogy valamit a kódban nem úgy csináltam, ahogy kellett volna, ezért beillesztem:

 //includes/image.inc 
function image_simple_threshold($source, $destination,  $threshold_value = 127)
{
	return image_toolkit_invoke('simple_threshold', array($source, $destination, $threshold_value));
}

 //includes/image.gd.inc
function image_gd_simple_threshold($source, $destination,  $threshold_value)
{
	if (!file_exists($source))
	{
		return FALSE;
	}
 
	$info = image_get_info($source);
	if (!$info)
	{
		return FALSE;
	}
 
	$im = image_gd_open($source, $info['extension']);
	if (!$im)
	{
		return FALSE;
	}
	$res = imagecreatetruecolor($info['width'],$info['height']);			
	for ($x=0;$x<$info['width'];$x++) 
	{
		for ($y=0;$y<$info['height'];$y++) 
		{
			$rgb = imagecolorat($im,$x,$y);
			$a = ($rgb >> 24) & 0xFF;
			$r = ($rgb >> 16) & 0xFF;
			$g = ($rgb >> 8) & 0xFF;
			$b = $rgb & 0xFF;
 
			if($r > $threshold_value)
			{
				$temp[0] = 254;
			}
			else
			{
				$temp[0] = 0;
			}
			if($g > $threshold_value)
			{
				$temp[1] = 254;
			}
			else
			{
				$temp[1] = 0;
			}
			if($b > $threshold_value)
			{
				$temp[2] = 254;
			}
			else
			{
				$temp[2] = 0;
			}
 
			$color = imagecolorallocatealpha($res,$temp[0],$temp[1],$temp[2],$a);
			imagesetpixel($res,$x,$y,$color);
		}
		$result = image_gd_close($res, $destination, $info['extension']);
 
		imagedestroy($res);
		imagedestroy($im);
 
		return $result;
	}
}

Remélem érthetően adtam át az álmatlan északát okozó problémámat.

A válaszokat előre is köszönöm.

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
aideluxe képe

Megoldottam.

0
0