1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-30 17:19:50 +02:00

Refactor color allocation helper

This commit is contained in:
Oliver Vogel
2023-11-11 09:32:28 +01:00
parent b36bbcfe0c
commit bb2772041a
2 changed files with 25 additions and 17 deletions

View File

@@ -3,7 +3,6 @@
namespace Intervention\Image\Drivers\Gd;
use Intervention\Image\Collection;
use Intervention\Image\Colors\Rgb\Channels\Alpha;
use Intervention\Image\Drivers\Gd\Frame;
use Intervention\Image\Drivers\Gd\Image;
use Intervention\Image\Drivers\Gd\Traits\CanHandleColors;
@@ -11,9 +10,6 @@ use Intervention\Image\Interfaces\ColorInterface;
use Intervention\Image\Interfaces\FactoryInterface;
use Intervention\Image\Interfaces\ImageInterface;
use Intervention\Image\Traits\CanHandleInput;
use Intervention\Image\Colors\Rgb\Channels\Blue;
use Intervention\Image\Colors\Rgb\Channels\Green;
use Intervention\Image\Colors\Rgb\Channels\Red;
class Factory implements FactoryInterface
{
@@ -73,19 +69,7 @@ class Factory implements FactoryInterface
$color = match (is_null($background)) {
true => imagecolorallocatealpha($core, 255, 0, 255, 127),
default => imagecolorallocatealpha(
$core,
$background->channel(Red::class)->value(),
$background->channel(Green::class)->value(),
$background->channel(Blue::class)->value(),
$this->convertRange(
$background->channel(Alpha::class)->value(),
0,
255,
127,
0
)
),
default => $this->allocateColor($core, $background),
};
imagefill($core, 0, 0, $color);

View File

@@ -2,10 +2,34 @@
namespace Intervention\Image\Drivers\Gd\Traits;
use GdImage;
use Intervention\Image\Colors\Rgb\Color;
use Intervention\Image\Interfaces\ColorInterface;
use Intervention\Image\Colors\Rgb\Channels\Alpha;
use Intervention\Image\Colors\Rgb\Channels\Blue;
use Intervention\Image\Colors\Rgb\Channels\Green;
use Intervention\Image\Colors\Rgb\Channels\Red;
trait CanHandleColors
{
/**
* Allocate given color in given gd image and return color value/index
*
* @param GdImage $gd
* @param ColorInterface $color
* @return int
*/
protected function allocateColor(GdImage $gd, ColorInterface $color): int
{
return imagecolorallocatealpha(
$gd,
$color->channel(Red::class)->value(),
$color->channel(Green::class)->value(),
$color->channel(Blue::class)->value(),
$this->convertRange($color->channel(Alpha::class)->value(), 0, 255, 127, 0)
);
}
/**
* Transforms array result from imagecolorsforindex() to Color object
*