1
0
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:
Oliver Vogel
2014-05-26 19:54:47 +02:00
parent ba2e707445
commit e0d9c258ce
2 changed files with 132 additions and 0 deletions

View 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;
}
}

View 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);
}
}