Ü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.
ok
Megoldottam.