mirror of
https://github.com/Intervention/image.git
synced 2025-08-30 09:10:21 +02:00
added orientate command
This commit is contained in:
48
src/Intervention/Image/Commands/OrientateCommand.php
Normal file
48
src/Intervention/Image/Commands/OrientateCommand.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace Intervention\Image\Commands;
|
||||
|
||||
class OrientateCommand extends AbstractCommand
|
||||
{
|
||||
/**
|
||||
* Correct image orientation according to Exif data
|
||||
*
|
||||
* @param Intervention\Image\Image $image
|
||||
* @return boolean
|
||||
*/
|
||||
public function execute($image)
|
||||
{
|
||||
switch ($image->exif('Orientation')) {
|
||||
|
||||
case 2:
|
||||
$image->flip();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
$image->rotate(180);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
$image->rotate(180)->flip();
|
||||
break;
|
||||
|
||||
case 5:
|
||||
$image->rotate(270)->flip();
|
||||
break;
|
||||
|
||||
case 6:
|
||||
$image->rotate(270);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
$image->rotate(90)->flip();
|
||||
break;
|
||||
|
||||
case 8:
|
||||
$image->rotate(90);
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
84
tests/OrientateCommandTest.php
Normal file
84
tests/OrientateCommandTest.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
use Intervention\Image\Commands\OrientateCommand;
|
||||
|
||||
class OrientateCommandTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function tearDown()
|
||||
{
|
||||
Mockery::close();
|
||||
}
|
||||
|
||||
public function testExecuteOrientationTwo()
|
||||
{
|
||||
$image = Mockery::mock('Intervention\Image\Image');
|
||||
$image->shouldReceive('exif')->with('Orientation')->once()->andReturn(2);
|
||||
$image->shouldReceive('flip')->once();
|
||||
$command = new OrientateCommand(array());
|
||||
$result = $command->execute($image);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testExecuteOrientationThree()
|
||||
{
|
||||
$image = Mockery::mock('Intervention\Image\Image');
|
||||
$image->shouldReceive('exif')->with('Orientation')->once()->andReturn(3);
|
||||
$image->shouldReceive('rotate')->with(180)->once();
|
||||
$command = new OrientateCommand(array());
|
||||
$result = $command->execute($image);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testExecuteOrientationFour()
|
||||
{
|
||||
$image = Mockery::mock('Intervention\Image\Image');
|
||||
$image->shouldReceive('exif')->with('Orientation')->once()->andReturn(4);
|
||||
$image->shouldReceive('rotate')->with(180)->once()->andReturn($image);
|
||||
$image->shouldReceive('flip')->once();
|
||||
$command = new OrientateCommand(array());
|
||||
$result = $command->execute($image);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testExecuteOrientationFive()
|
||||
{
|
||||
$image = Mockery::mock('Intervention\Image\Image');
|
||||
$image->shouldReceive('exif')->with('Orientation')->once()->andReturn(5);
|
||||
$image->shouldReceive('rotate')->with(270)->once()->andReturn($image);
|
||||
$image->shouldReceive('flip')->once();
|
||||
$command = new OrientateCommand(array());
|
||||
$result = $command->execute($image);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testExecuteOrientationSix()
|
||||
{
|
||||
$image = Mockery::mock('Intervention\Image\Image');
|
||||
$image->shouldReceive('exif')->with('Orientation')->once()->andReturn(6);
|
||||
$image->shouldReceive('rotate')->with(270)->once();
|
||||
$command = new OrientateCommand(array());
|
||||
$result = $command->execute($image);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testExecuteOrientationSeven()
|
||||
{
|
||||
$image = Mockery::mock('Intervention\Image\Image');
|
||||
$image->shouldReceive('exif')->with('Orientation')->once()->andReturn(7);
|
||||
$image->shouldReceive('rotate')->with(90)->once()->andReturn($image);
|
||||
$image->shouldReceive('flip')->once();
|
||||
$command = new OrientateCommand(array());
|
||||
$result = $command->execute($image);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
public function testExecuteOrientationEight()
|
||||
{
|
||||
$image = Mockery::mock('Intervention\Image\Image');
|
||||
$image->shouldReceive('exif')->with('Orientation')->once()->andReturn(8);
|
||||
$image->shouldReceive('rotate')->with(90)->once();
|
||||
$command = new OrientateCommand(array());
|
||||
$result = $command->execute($image);
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user