diff --git a/src/Intervention/Image/Commands/OrientateCommand.php b/src/Intervention/Image/Commands/OrientateCommand.php new file mode 100644 index 00000000..cea63b09 --- /dev/null +++ b/src/Intervention/Image/Commands/OrientateCommand.php @@ -0,0 +1,48 @@ +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; + } +} diff --git a/tests/OrientateCommandTest.php b/tests/OrientateCommandTest.php new file mode 100644 index 00000000..e718346e --- /dev/null +++ b/tests/OrientateCommandTest.php @@ -0,0 +1,84 @@ +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); + } +}