1
0
mirror of https://github.com/Intervention/image.git synced 2025-09-03 10:53:01 +02:00

Add image cloning

This commit is contained in:
Oliver Vogel
2023-12-13 17:28:07 +01:00
parent 343f53001d
commit 50e3e3308e
8 changed files with 117 additions and 53 deletions

View File

@@ -4,6 +4,10 @@ namespace Intervention\Image\Tests\Drivers\Gd;
use Intervention\Image\Analyzers\WidthAnalyzer;
use Intervention\Image\Collection;
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;
use Intervention\Image\Drivers\Gd\Core;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Drivers\Gd\Frame;
@@ -17,10 +21,13 @@ use Intervention\Image\Interfaces\ResolutionInterface;
use Intervention\Image\Interfaces\SizeInterface;
use Intervention\Image\Modifiers\GreyscaleModifier;
use Intervention\Image\Tests\TestCase;
use Intervention\Image\Tests\Traits\CanCreateGdTestImage;
use Intervention\Image\Typography\Font;
class ImageTest extends TestCase
{
use CanCreateGdTestImage;
protected Image $image;
public function setUp(): void
@@ -37,6 +44,25 @@ class ImageTest extends TestCase
);
}
public function testClone(): void
{
$image = $this->readTestImage('gradient.gif');
$clone = clone $image;
$this->assertEquals(16, $image->width());
$this->assertEquals(16, $clone->width());
$result = $clone->crop(4, 4);
$this->assertEquals(16, $image->width());
$this->assertEquals(4, $clone->width());
$this->assertEquals(4, $result->width());
$this->assertEquals('ff0000', $image->pickColor(0, 0)->toHex());
$this->assertEquals('00000000', $image->pickColor(1, 0)->toHex());
$this->assertEquals('ff0000', $clone->pickColor(0, 0)->toHex());
$this->assertEquals('00000000', $clone->pickColor(1, 0)->toHex());
}
public function testDriver(): void
{
$this->assertInstanceOf(Driver::class, $this->image->driver());

View File

@@ -3,6 +3,11 @@
namespace Intervention\Image\Tests\Drivers\Imagick;
use Imagick;
use ImagickPixel;
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;
use Intervention\Image\Analyzers\WidthAnalyzer;
use Intervention\Image\Collection;
use Intervention\Image\Drivers\Imagick\Core;
@@ -18,9 +23,12 @@ use Intervention\Image\Interfaces\ResolutionInterface;
use Intervention\Image\Interfaces\SizeInterface;
use Intervention\Image\Modifiers\GreyscaleModifier;
use Intervention\Image\Tests\TestCase;
use Intervention\Image\Tests\Traits\CanCreateImagickTestImage;
class ImageTest extends TestCase
{
use CanCreateImagickTestImage;
protected Image $image;
public function setUp(): void
@@ -36,6 +44,25 @@ class ImageTest extends TestCase
);
}
public function testClone(): void
{
$image = $this->readTestImage('gradient.gif');
$clone = clone $image;
$this->assertEquals(16, $image->width());
$this->assertEquals(16, $clone->width());
$result = $clone->crop(4, 4);
$this->assertEquals(16, $image->width());
$this->assertEquals(4, $clone->width());
$this->assertEquals(4, $result->width());
$this->assertEquals('ff0000', $image->pickColor(0, 0)->toHex());
$this->assertEquals('00000000', $image->pickColor(1, 0)->toHex());
$this->assertEquals('ff0000', $clone->pickColor(0, 0)->toHex());
$this->assertEquals('00000000', $clone->pickColor(1, 0)->toHex());
}
public function testDriver(): void
{
$this->assertInstanceOf(Driver::class, $this->image->driver());

View File

@@ -1,53 +0,0 @@
<?php
namespace Intervention\Image\Tests;
use Imagick;
use ImagickPixel;
use Intervention\Image\Drivers\Gd\Core as GdCore;
use Intervention\Image\Drivers\Gd\Driver as GdDriver;
use Intervention\Image\Drivers\Gd\Frame as GdFrame;
use Intervention\Image\Drivers\Imagick\Core as ImagickCore;
use Intervention\Image\Drivers\Imagick\Driver as ImagickDriver;
use Intervention\Image\Image;
class ImageTest extends TestCase
{
public function testCloneImageGd(): void
{
$image = new Image(
new GdDriver(),
new GdCore([
new GdFrame(imagecreatetruecolor(3, 3))
])
);
$clone = clone $image;
$this->assertEquals(3, $image->width());
$this->assertEquals(3, $clone->width());
$result = $clone->resize(1);
$this->assertEquals(3, $image->width());
$this->assertEquals(1, $clone->width());
$this->assertEquals(1, $result->width());
}
public function testCloneImageImagick(): void
{
$imagick = new Imagick();
$imagick->newImage(3, 2, new ImagickPixel('red'), 'png');
$image = new Image(
new ImagickDriver(),
new ImagickCore($imagick)
);
$clone = clone $image;
$this->assertEquals(3, $image->width());
$this->assertEquals(3, $clone->width());
$result = $clone->resize(1);
$this->assertEquals(3, $image->width());
$this->assertEquals(1, $clone->width());
$this->assertEquals(1, $result->width());
}
}