rendered paste bodyclass ImageManipulation
{
public $im = null;
public function __construct($file)
{
// put gd in $this->im
}
public function get_rgb_channels()
{
$width=imageSX($im);
$height=imageSY($im);
$red_channel = imagecreate($width, $height);
imagecopy($red_channel,$im,0,0,0,0,$width,$height);
$green_channel = imagecreate($width, $height);
imagecopy($green_channel,$im,0,0,0,0,$width,$height);
$blue_channel = imagecreate($width, $height);
imagecopy($blue_channel,$im,0,0,0,0,$width,$height);
for ($x = 0; $x < $width; $x++)
{
for ($y = 0; $y < $width; $y++)
{
$index = imagecolorat($this->im, $x, $y);
$color = imagecolorsforindex($this->im, $index);
$red = $color['red'];
$green = $color['green'];
$blue = $color['blue'];
$red_index = imagecolorat($red_channel, $x, $y);
$green_index = imagecolorat($green_channel, $x, $y);
$blue_index = imagecolorat($blue_channel, $x, $y);
$red_color = imagecolorallocate($red_channel, $red, 0, 0);
$green_color = imagecolorallocate($green_channel, 0, $green, 0);
$blue_color = imagecolorallocate($blue_channel, 0, 0, $blue);
imagesetpixel($red_channel,$x,$y,$red_color);
imagesetpixel($green_channel,$x,$y,$green_color);
imagesetpixel($blue_channel,$x,$y,$blue_color);
}
}
return array('red'=>$red_channel,'green'=>$green_channel,'blue'=>$blue_channel);
}
}