mirror of
https://github.com/Intervention/image.git
synced 2025-08-10 16:04:04 +02:00
added possibility to fill and insert universal input
This commit is contained in:
@@ -717,15 +717,15 @@ class Image
|
|||||||
/**
|
/**
|
||||||
* Insert another image on top of the current image
|
* Insert another image on top of the current image
|
||||||
*
|
*
|
||||||
* @param mixed $file
|
* @param mixed $source
|
||||||
* @param integer $pos_x
|
* @param integer $pos_x
|
||||||
* @param integer $pos_y
|
* @param integer $pos_y
|
||||||
* @param string $anchor
|
* @param string $anchor
|
||||||
* @return Image
|
* @return Image
|
||||||
*/
|
*/
|
||||||
public function insert($file, $pos_x = 0, $pos_y = 0, $anchor = null)
|
public function insert($source, $pos_x = 0, $pos_y = 0, $anchor = null)
|
||||||
{
|
{
|
||||||
$obj = is_a($file, 'Intervention\Image\Image') ? $file : (new Image($file));
|
$obj = is_a($source, 'Intervention\Image\Image') ? $source : (new Image($source));
|
||||||
|
|
||||||
// define anchor
|
// define anchor
|
||||||
switch ($anchor) {
|
switch ($anchor) {
|
||||||
@@ -901,34 +901,47 @@ class Image
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill image with given color or image at position x,y
|
* Fill image with given color or image source at position x,y
|
||||||
*
|
*
|
||||||
* @param mixed $color
|
* @param mixed $source
|
||||||
* @param integer $pos_x
|
* @param integer $pos_x
|
||||||
* @param integer $pos_y
|
* @param integer $pos_y
|
||||||
* @return Image
|
* @return Image
|
||||||
*/
|
*/
|
||||||
public function fill($color, $pos_x = 0, $pos_y = 0)
|
public function fill($source, $pos_x = 0, $pos_y = 0)
|
||||||
{
|
{
|
||||||
if (is_a($color, 'Intervention\Image\Image')) {
|
if (is_a($source, 'Intervention\Image\Image')) {
|
||||||
|
|
||||||
// fill with image
|
// fill with image
|
||||||
imagesettile($this->resource, $color->resource);
|
imagesettile($this->resource, $source->resource);
|
||||||
$color = IMG_COLOR_TILED;
|
$source = IMG_COLOR_TILED;
|
||||||
|
|
||||||
} elseif ($this->isImageResource($color)) {
|
} elseif ($this->isImageResource($source)) {
|
||||||
|
|
||||||
// fill with image resource
|
// fill with image resource
|
||||||
imagesettile($this->resource, $color);
|
imagesettile($this->resource, $source);
|
||||||
$color = IMG_COLOR_TILED;
|
$source = IMG_COLOR_TILED;
|
||||||
|
|
||||||
|
} elseif (is_string($source) && file_exists($source)) {
|
||||||
|
|
||||||
|
$img = new self($source);
|
||||||
|
imagesettile($this->resource, $img->resource);
|
||||||
|
$source = IMG_COLOR_TILED;
|
||||||
|
|
||||||
|
} elseif (is_string($source) && $this->isBinary($source)) {
|
||||||
|
|
||||||
|
// fill with image from binary string
|
||||||
|
$img = new self($source);
|
||||||
|
imagesettile($this->resource, $img->resource);
|
||||||
|
$source = IMG_COLOR_TILED;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// fill with color
|
// fill with color
|
||||||
$color = $this->parseColor($color);
|
$source = $this->parseColor($source);
|
||||||
}
|
}
|
||||||
|
|
||||||
imagefill($this->resource, $pos_x, $pos_y, $color);
|
imagefill($this->resource, $pos_x, $pos_y, $source);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@@ -742,6 +742,57 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
|||||||
$img->reset();
|
$img->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInsertImageFromResource()
|
||||||
|
{
|
||||||
|
$resource = imagecreatefrompng('public/tile.png');
|
||||||
|
$img = Image::canvas(16, 16)->insert($resource);
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 16);
|
||||||
|
$this->assertEquals($img->height, 16);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(15, 15, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInsertImageFromBinary()
|
||||||
|
{
|
||||||
|
$data = file_get_contents('public/tile.png');
|
||||||
|
$img = Image::canvas(16, 16)->insert($data);
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 16);
|
||||||
|
$this->assertEquals($img->height, 16);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(15, 15, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInsertImageFromObject()
|
||||||
|
{
|
||||||
|
$obj = new Image('public/tile.png');
|
||||||
|
$img = Image::canvas(16, 16)->insert($obj);
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 16);
|
||||||
|
$this->assertEquals($img->height, 16);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(15, 15, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInsertImageFromPath()
|
||||||
|
{
|
||||||
|
$img = Image::canvas(16, 16)->insert('public/tile.png');
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 16);
|
||||||
|
$this->assertEquals($img->height, 16);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(15, 15, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
public function testOpacity()
|
public function testOpacity()
|
||||||
{
|
{
|
||||||
// simple image mask
|
// simple image mask
|
||||||
@@ -874,7 +925,57 @@ class ImageTest extends PHPUnit_Framework_Testcase
|
|||||||
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
$this->assertEquals('#445160', $img->pickColor(31, 31, 'hex'));
|
$this->assertEquals('#445160', $img->pickColor(31, 31, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFillImageWithResource()
|
||||||
|
{
|
||||||
|
$resource = imagecreatefrompng('public/tile.png');
|
||||||
|
$img = Image::canvas(32, 32)->fill($resource);
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 32);
|
||||||
|
$this->assertEquals($img->height, 32);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(31, 31, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFillImageWithBinary()
|
||||||
|
{
|
||||||
|
$data = file_get_contents('public/tile.png');
|
||||||
|
$img = Image::canvas(32, 32)->fill($data);
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 32);
|
||||||
|
$this->assertEquals($img->height, 32);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(31, 31, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFillImageWithObject()
|
||||||
|
{
|
||||||
|
$obj = new Image('public/tile.png');
|
||||||
|
$img = Image::canvas(32, 32)->fill($obj);
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 32);
|
||||||
|
$this->assertEquals($img->height, 32);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(31, 31, 'hex'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testFillImageWithPath()
|
||||||
|
{
|
||||||
|
$img = Image::canvas(32, 32)->fill('public/tile.png');
|
||||||
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
||||||
|
$this->assertInternalType('int', $img->width);
|
||||||
|
$this->assertInternalType('int', $img->height);
|
||||||
|
$this->assertEquals($img->width, 32);
|
||||||
|
$this->assertEquals($img->height, 32);
|
||||||
|
$this->assertEquals('#b4e000', $img->pickColor(0, 0, 'hex'));
|
||||||
|
$this->assertEquals('#445160', $img->pickColor(31, 31, 'hex'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPixelImage()
|
public function testPixelImage()
|
||||||
|
Reference in New Issue
Block a user