function testCreate() { $img = wiPaletteImage::create(10, 10); $this->assertTrue($img instanceof wiPaletteImage); $this->assertTrue($img->isValid()); $this->assertFalse($img->isTrueColor()); }
function execute($img, $channels) { $blank = array('red' => 0, 'green' => 0, 'blue' => 0); if (isset($channels['alpha'])) { unset($channels['alpha']); } $width = $img->getWidth(); $height = $img->getHeight(); $copy = wiPaletteImage::create($width, $height); if ($img->isTransparent()) { $otci = $img->getTransparentColor(); $TRGB = $img->getColorRGB($otci); $tci = $copy->allocateColor($TRGB); } else { $otci = null; $tci = null; } for ($x = 0; $x < $width; $x++) { for ($y = 0; $y < $height; $y++) { $ci = $img->getColorAt($x, $y); if ($ci === $otci) { $copy->setColorAt($x, $y, $tci); continue; } $RGB = $img->getColorRGB($ci); $newRGB = $blank; foreach ($channels as $channel) { $newRGB[$channel] = $RGB[$channel]; } $color = $copy->getExactColor($newRGB); if ($color == -1) { $color = $copy->allocateColor($newRGB); } $copy->setColorAt($x, $y, $color); } } if ($img->isTransparent()) { $copy->setTransparentColor($tci); } return $copy; }
protected function copyAsNew($trueColor = false) { $width = $this->getWidth(); $height = $this->getHeight(); if ($trueColor) { $new = wiTrueColorImage::create($width, $height); } else { $new = wiPaletteImage::create($width, $height); } // copy transparency of source to target if ($this->isTransparent()) { $rgb = $this->getTransparentColorRGB(); if (is_array($rgb)) { $tci = $new->allocateColor($rgb['red'], $rgb['green'], $rgb['blue']); $new->fill(0, 0, $tci); $new->setTransparentColor($tci); } } imageCopy($new->getHandle(), $this->handle, 0, 0, 0, 0, $width, $height); return $new; }