diff --git a/test/fixtures/expected/Landscape_1_flip-out.jpg b/test/fixtures/expected/Landscape_1_flip-out.jpg new file mode 100644 index 00000000..5d9c7b1c Binary files /dev/null and b/test/fixtures/expected/Landscape_1_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_1_flip_flop-out.jpg b/test/fixtures/expected/Landscape_1_flip_flop-out.jpg new file mode 100644 index 00000000..8df75ba7 Binary files /dev/null and b/test/fixtures/expected/Landscape_1_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_1_flop-out.jpg b/test/fixtures/expected/Landscape_1_flop-out.jpg new file mode 100644 index 00000000..f68ba94c Binary files /dev/null and b/test/fixtures/expected/Landscape_1_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_1_rotate180-out.jpg b/test/fixtures/expected/Landscape_1_rotate180-out.jpg new file mode 100644 index 00000000..8df75ba7 Binary files /dev/null and b/test/fixtures/expected/Landscape_1_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_1_rotate270-out.jpg b/test/fixtures/expected/Landscape_1_rotate270-out.jpg new file mode 100644 index 00000000..378b021d Binary files /dev/null and b/test/fixtures/expected/Landscape_1_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_1_rotate45-out.jpg b/test/fixtures/expected/Landscape_1_rotate45-out.jpg new file mode 100644 index 00000000..e195b9d4 Binary files /dev/null and b/test/fixtures/expected/Landscape_1_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_1_rotate90-out.jpg b/test/fixtures/expected/Landscape_1_rotate90-out.jpg new file mode 100644 index 00000000..e01b9088 Binary files /dev/null and b/test/fixtures/expected/Landscape_1_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Landscape_2_flip-out.jpg b/test/fixtures/expected/Landscape_2_flip-out.jpg new file mode 100644 index 00000000..1a54946f Binary files /dev/null and b/test/fixtures/expected/Landscape_2_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_2_flip_flop-out.jpg b/test/fixtures/expected/Landscape_2_flip_flop-out.jpg new file mode 100644 index 00000000..382b7324 Binary files /dev/null and b/test/fixtures/expected/Landscape_2_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_2_flop-out.jpg b/test/fixtures/expected/Landscape_2_flop-out.jpg new file mode 100644 index 00000000..5d260769 Binary files /dev/null and b/test/fixtures/expected/Landscape_2_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_2_rotate180-out.jpg b/test/fixtures/expected/Landscape_2_rotate180-out.jpg new file mode 100644 index 00000000..382b7324 Binary files /dev/null and b/test/fixtures/expected/Landscape_2_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_2_rotate270-out.jpg b/test/fixtures/expected/Landscape_2_rotate270-out.jpg new file mode 100644 index 00000000..6627376b Binary files /dev/null and b/test/fixtures/expected/Landscape_2_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_2_rotate45-out.jpg b/test/fixtures/expected/Landscape_2_rotate45-out.jpg new file mode 100644 index 00000000..d46a3540 Binary files /dev/null and b/test/fixtures/expected/Landscape_2_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_2_rotate90-out.jpg b/test/fixtures/expected/Landscape_2_rotate90-out.jpg new file mode 100644 index 00000000..0600f6eb Binary files /dev/null and b/test/fixtures/expected/Landscape_2_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Landscape_3_flip-out.jpg b/test/fixtures/expected/Landscape_3_flip-out.jpg new file mode 100644 index 00000000..2a9d2404 Binary files /dev/null and b/test/fixtures/expected/Landscape_3_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_3_flip_flop-out.jpg b/test/fixtures/expected/Landscape_3_flip_flop-out.jpg new file mode 100644 index 00000000..b3eb2e87 Binary files /dev/null and b/test/fixtures/expected/Landscape_3_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_3_flop-out.jpg b/test/fixtures/expected/Landscape_3_flop-out.jpg new file mode 100644 index 00000000..0a105d95 Binary files /dev/null and b/test/fixtures/expected/Landscape_3_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_3_rotate180-out.jpg b/test/fixtures/expected/Landscape_3_rotate180-out.jpg new file mode 100644 index 00000000..b3eb2e87 Binary files /dev/null and b/test/fixtures/expected/Landscape_3_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_3_rotate270-out.jpg b/test/fixtures/expected/Landscape_3_rotate270-out.jpg new file mode 100644 index 00000000..98c3bcc4 Binary files /dev/null and b/test/fixtures/expected/Landscape_3_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_3_rotate45-out.jpg b/test/fixtures/expected/Landscape_3_rotate45-out.jpg new file mode 100644 index 00000000..6f74fdb3 Binary files /dev/null and b/test/fixtures/expected/Landscape_3_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_3_rotate90-out.jpg b/test/fixtures/expected/Landscape_3_rotate90-out.jpg new file mode 100644 index 00000000..3026268b Binary files /dev/null and b/test/fixtures/expected/Landscape_3_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Landscape_4_flip-out.jpg b/test/fixtures/expected/Landscape_4_flip-out.jpg new file mode 100644 index 00000000..6cb2e8e5 Binary files /dev/null and b/test/fixtures/expected/Landscape_4_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_4_flip_flop-out.jpg b/test/fixtures/expected/Landscape_4_flip_flop-out.jpg new file mode 100644 index 00000000..440c2374 Binary files /dev/null and b/test/fixtures/expected/Landscape_4_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_4_flop-out.jpg b/test/fixtures/expected/Landscape_4_flop-out.jpg new file mode 100644 index 00000000..aa9d3df9 Binary files /dev/null and b/test/fixtures/expected/Landscape_4_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_4_rotate180-out.jpg b/test/fixtures/expected/Landscape_4_rotate180-out.jpg new file mode 100644 index 00000000..440c2374 Binary files /dev/null and b/test/fixtures/expected/Landscape_4_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_4_rotate270-out.jpg b/test/fixtures/expected/Landscape_4_rotate270-out.jpg new file mode 100644 index 00000000..55d17a1a Binary files /dev/null and b/test/fixtures/expected/Landscape_4_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_4_rotate45-out.jpg b/test/fixtures/expected/Landscape_4_rotate45-out.jpg new file mode 100644 index 00000000..76237462 Binary files /dev/null and b/test/fixtures/expected/Landscape_4_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_4_rotate90-out.jpg b/test/fixtures/expected/Landscape_4_rotate90-out.jpg new file mode 100644 index 00000000..c3543e07 Binary files /dev/null and b/test/fixtures/expected/Landscape_4_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Landscape_5_flip-out.jpg b/test/fixtures/expected/Landscape_5_flip-out.jpg new file mode 100644 index 00000000..7b047485 Binary files /dev/null and b/test/fixtures/expected/Landscape_5_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_5_flip_flop-out.jpg b/test/fixtures/expected/Landscape_5_flip_flop-out.jpg new file mode 100644 index 00000000..06a1fb92 Binary files /dev/null and b/test/fixtures/expected/Landscape_5_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_5_flop-out.jpg b/test/fixtures/expected/Landscape_5_flop-out.jpg new file mode 100644 index 00000000..bd59dff2 Binary files /dev/null and b/test/fixtures/expected/Landscape_5_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_5_rotate180-out.jpg b/test/fixtures/expected/Landscape_5_rotate180-out.jpg new file mode 100644 index 00000000..06a1fb92 Binary files /dev/null and b/test/fixtures/expected/Landscape_5_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_5_rotate270-out.jpg b/test/fixtures/expected/Landscape_5_rotate270-out.jpg new file mode 100644 index 00000000..06d77252 Binary files /dev/null and b/test/fixtures/expected/Landscape_5_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_5_rotate45-out.jpg b/test/fixtures/expected/Landscape_5_rotate45-out.jpg new file mode 100644 index 00000000..0df79d2b Binary files /dev/null and b/test/fixtures/expected/Landscape_5_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_5_rotate90-out.jpg b/test/fixtures/expected/Landscape_5_rotate90-out.jpg new file mode 100644 index 00000000..ad21a7d8 Binary files /dev/null and b/test/fixtures/expected/Landscape_5_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Landscape_6_flip-out.jpg b/test/fixtures/expected/Landscape_6_flip-out.jpg new file mode 100644 index 00000000..c8012cbe Binary files /dev/null and b/test/fixtures/expected/Landscape_6_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_6_flip_flop-out.jpg b/test/fixtures/expected/Landscape_6_flip_flop-out.jpg new file mode 100644 index 00000000..ad093bff Binary files /dev/null and b/test/fixtures/expected/Landscape_6_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_6_flop-out.jpg b/test/fixtures/expected/Landscape_6_flop-out.jpg new file mode 100644 index 00000000..86af2d2e Binary files /dev/null and b/test/fixtures/expected/Landscape_6_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_6_rotate180-out.jpg b/test/fixtures/expected/Landscape_6_rotate180-out.jpg new file mode 100644 index 00000000..ad093bff Binary files /dev/null and b/test/fixtures/expected/Landscape_6_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_6_rotate270-out.jpg b/test/fixtures/expected/Landscape_6_rotate270-out.jpg new file mode 100644 index 00000000..4cbbff54 Binary files /dev/null and b/test/fixtures/expected/Landscape_6_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_6_rotate45-out.jpg b/test/fixtures/expected/Landscape_6_rotate45-out.jpg new file mode 100644 index 00000000..07a10956 Binary files /dev/null and b/test/fixtures/expected/Landscape_6_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_6_rotate90-out.jpg b/test/fixtures/expected/Landscape_6_rotate90-out.jpg new file mode 100644 index 00000000..6fe10649 Binary files /dev/null and b/test/fixtures/expected/Landscape_6_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Landscape_7_flip-out.jpg b/test/fixtures/expected/Landscape_7_flip-out.jpg new file mode 100644 index 00000000..ed14166c Binary files /dev/null and b/test/fixtures/expected/Landscape_7_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_7_flip_flop-out.jpg b/test/fixtures/expected/Landscape_7_flip_flop-out.jpg new file mode 100644 index 00000000..522130cc Binary files /dev/null and b/test/fixtures/expected/Landscape_7_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_7_flop-out.jpg b/test/fixtures/expected/Landscape_7_flop-out.jpg new file mode 100644 index 00000000..a792fab3 Binary files /dev/null and b/test/fixtures/expected/Landscape_7_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_7_rotate180-out.jpg b/test/fixtures/expected/Landscape_7_rotate180-out.jpg new file mode 100644 index 00000000..522130cc Binary files /dev/null and b/test/fixtures/expected/Landscape_7_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_7_rotate270-out.jpg b/test/fixtures/expected/Landscape_7_rotate270-out.jpg new file mode 100644 index 00000000..b7bbae5b Binary files /dev/null and b/test/fixtures/expected/Landscape_7_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_7_rotate45-out.jpg b/test/fixtures/expected/Landscape_7_rotate45-out.jpg new file mode 100644 index 00000000..76881c29 Binary files /dev/null and b/test/fixtures/expected/Landscape_7_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_7_rotate90-out.jpg b/test/fixtures/expected/Landscape_7_rotate90-out.jpg new file mode 100644 index 00000000..b33cd9cb Binary files /dev/null and b/test/fixtures/expected/Landscape_7_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Landscape_8_flip-out.jpg b/test/fixtures/expected/Landscape_8_flip-out.jpg new file mode 100644 index 00000000..7ab9fd40 Binary files /dev/null and b/test/fixtures/expected/Landscape_8_flip-out.jpg differ diff --git a/test/fixtures/expected/Landscape_8_flip_flop-out.jpg b/test/fixtures/expected/Landscape_8_flip_flop-out.jpg new file mode 100644 index 00000000..e931394c Binary files /dev/null and b/test/fixtures/expected/Landscape_8_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_8_flop-out.jpg b/test/fixtures/expected/Landscape_8_flop-out.jpg new file mode 100644 index 00000000..ea275beb Binary files /dev/null and b/test/fixtures/expected/Landscape_8_flop-out.jpg differ diff --git a/test/fixtures/expected/Landscape_8_rotate180-out.jpg b/test/fixtures/expected/Landscape_8_rotate180-out.jpg new file mode 100644 index 00000000..e931394c Binary files /dev/null and b/test/fixtures/expected/Landscape_8_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Landscape_8_rotate270-out.jpg b/test/fixtures/expected/Landscape_8_rotate270-out.jpg new file mode 100644 index 00000000..09beada7 Binary files /dev/null and b/test/fixtures/expected/Landscape_8_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Landscape_8_rotate45-out.jpg b/test/fixtures/expected/Landscape_8_rotate45-out.jpg new file mode 100644 index 00000000..cd015766 Binary files /dev/null and b/test/fixtures/expected/Landscape_8_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Landscape_8_rotate90-out.jpg b/test/fixtures/expected/Landscape_8_rotate90-out.jpg new file mode 100644 index 00000000..d806c013 Binary files /dev/null and b/test/fixtures/expected/Landscape_8_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_1_flip-out.jpg b/test/fixtures/expected/Portrait_1_flip-out.jpg new file mode 100644 index 00000000..13fbbd66 Binary files /dev/null and b/test/fixtures/expected/Portrait_1_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_1_flip_flop-out.jpg b/test/fixtures/expected/Portrait_1_flip_flop-out.jpg new file mode 100644 index 00000000..30b74859 Binary files /dev/null and b/test/fixtures/expected/Portrait_1_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_1_flop-out.jpg b/test/fixtures/expected/Portrait_1_flop-out.jpg new file mode 100644 index 00000000..09453d1d Binary files /dev/null and b/test/fixtures/expected/Portrait_1_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_1_rotate180-out.jpg b/test/fixtures/expected/Portrait_1_rotate180-out.jpg new file mode 100644 index 00000000..30b74859 Binary files /dev/null and b/test/fixtures/expected/Portrait_1_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_1_rotate270-out.jpg b/test/fixtures/expected/Portrait_1_rotate270-out.jpg new file mode 100644 index 00000000..941ae8ed Binary files /dev/null and b/test/fixtures/expected/Portrait_1_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_1_rotate45-out.jpg b/test/fixtures/expected/Portrait_1_rotate45-out.jpg new file mode 100644 index 00000000..d9316889 Binary files /dev/null and b/test/fixtures/expected/Portrait_1_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_1_rotate90-out.jpg b/test/fixtures/expected/Portrait_1_rotate90-out.jpg new file mode 100644 index 00000000..cd91b58e Binary files /dev/null and b/test/fixtures/expected/Portrait_1_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_2_flip-out.jpg b/test/fixtures/expected/Portrait_2_flip-out.jpg new file mode 100644 index 00000000..af48a72c Binary files /dev/null and b/test/fixtures/expected/Portrait_2_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_2_flip_flop-out.jpg b/test/fixtures/expected/Portrait_2_flip_flop-out.jpg new file mode 100644 index 00000000..7e83d64f Binary files /dev/null and b/test/fixtures/expected/Portrait_2_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_2_flop-out.jpg b/test/fixtures/expected/Portrait_2_flop-out.jpg new file mode 100644 index 00000000..f746afbf Binary files /dev/null and b/test/fixtures/expected/Portrait_2_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_2_rotate180-out.jpg b/test/fixtures/expected/Portrait_2_rotate180-out.jpg new file mode 100644 index 00000000..7e83d64f Binary files /dev/null and b/test/fixtures/expected/Portrait_2_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_2_rotate270-out.jpg b/test/fixtures/expected/Portrait_2_rotate270-out.jpg new file mode 100644 index 00000000..08ab320d Binary files /dev/null and b/test/fixtures/expected/Portrait_2_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_2_rotate45-out.jpg b/test/fixtures/expected/Portrait_2_rotate45-out.jpg new file mode 100644 index 00000000..81251c9b Binary files /dev/null and b/test/fixtures/expected/Portrait_2_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_2_rotate90-out.jpg b/test/fixtures/expected/Portrait_2_rotate90-out.jpg new file mode 100644 index 00000000..db4ed979 Binary files /dev/null and b/test/fixtures/expected/Portrait_2_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_3_flip-out.jpg b/test/fixtures/expected/Portrait_3_flip-out.jpg new file mode 100644 index 00000000..43aa137a Binary files /dev/null and b/test/fixtures/expected/Portrait_3_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_3_flip_flop-out.jpg b/test/fixtures/expected/Portrait_3_flip_flop-out.jpg new file mode 100644 index 00000000..2b7f34d1 Binary files /dev/null and b/test/fixtures/expected/Portrait_3_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_3_flop-out.jpg b/test/fixtures/expected/Portrait_3_flop-out.jpg new file mode 100644 index 00000000..654dbb5f Binary files /dev/null and b/test/fixtures/expected/Portrait_3_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_3_rotate180-out.jpg b/test/fixtures/expected/Portrait_3_rotate180-out.jpg new file mode 100644 index 00000000..2b7f34d1 Binary files /dev/null and b/test/fixtures/expected/Portrait_3_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_3_rotate270-out.jpg b/test/fixtures/expected/Portrait_3_rotate270-out.jpg new file mode 100644 index 00000000..d8cc2d08 Binary files /dev/null and b/test/fixtures/expected/Portrait_3_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_3_rotate45-out.jpg b/test/fixtures/expected/Portrait_3_rotate45-out.jpg new file mode 100644 index 00000000..d282dd93 Binary files /dev/null and b/test/fixtures/expected/Portrait_3_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_3_rotate90-out.jpg b/test/fixtures/expected/Portrait_3_rotate90-out.jpg new file mode 100644 index 00000000..3f668810 Binary files /dev/null and b/test/fixtures/expected/Portrait_3_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_4_flip-out.jpg b/test/fixtures/expected/Portrait_4_flip-out.jpg new file mode 100644 index 00000000..99d25b36 Binary files /dev/null and b/test/fixtures/expected/Portrait_4_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_4_flip_flop-out.jpg b/test/fixtures/expected/Portrait_4_flip_flop-out.jpg new file mode 100644 index 00000000..4ba5e0f7 Binary files /dev/null and b/test/fixtures/expected/Portrait_4_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_4_flop-out.jpg b/test/fixtures/expected/Portrait_4_flop-out.jpg new file mode 100644 index 00000000..aecd7d14 Binary files /dev/null and b/test/fixtures/expected/Portrait_4_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_4_rotate180-out.jpg b/test/fixtures/expected/Portrait_4_rotate180-out.jpg new file mode 100644 index 00000000..4ba5e0f7 Binary files /dev/null and b/test/fixtures/expected/Portrait_4_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_4_rotate270-out.jpg b/test/fixtures/expected/Portrait_4_rotate270-out.jpg new file mode 100644 index 00000000..5e3833c3 Binary files /dev/null and b/test/fixtures/expected/Portrait_4_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_4_rotate45-out.jpg b/test/fixtures/expected/Portrait_4_rotate45-out.jpg new file mode 100644 index 00000000..f110605d Binary files /dev/null and b/test/fixtures/expected/Portrait_4_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_4_rotate90-out.jpg b/test/fixtures/expected/Portrait_4_rotate90-out.jpg new file mode 100644 index 00000000..913626d7 Binary files /dev/null and b/test/fixtures/expected/Portrait_4_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_5_flip-out.jpg b/test/fixtures/expected/Portrait_5_flip-out.jpg new file mode 100644 index 00000000..e15c97f6 Binary files /dev/null and b/test/fixtures/expected/Portrait_5_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_5_flip_flop-out.jpg b/test/fixtures/expected/Portrait_5_flip_flop-out.jpg new file mode 100644 index 00000000..82c999c8 Binary files /dev/null and b/test/fixtures/expected/Portrait_5_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_5_flop-out.jpg b/test/fixtures/expected/Portrait_5_flop-out.jpg new file mode 100644 index 00000000..fdea1e99 Binary files /dev/null and b/test/fixtures/expected/Portrait_5_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_5_rotate180-out.jpg b/test/fixtures/expected/Portrait_5_rotate180-out.jpg new file mode 100644 index 00000000..82c999c8 Binary files /dev/null and b/test/fixtures/expected/Portrait_5_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_5_rotate270-out.jpg b/test/fixtures/expected/Portrait_5_rotate270-out.jpg new file mode 100644 index 00000000..ff704400 Binary files /dev/null and b/test/fixtures/expected/Portrait_5_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_5_rotate45-out.jpg b/test/fixtures/expected/Portrait_5_rotate45-out.jpg new file mode 100644 index 00000000..843fd8f0 Binary files /dev/null and b/test/fixtures/expected/Portrait_5_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_5_rotate90-out.jpg b/test/fixtures/expected/Portrait_5_rotate90-out.jpg new file mode 100644 index 00000000..5547e7df Binary files /dev/null and b/test/fixtures/expected/Portrait_5_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_6_flip-out.jpg b/test/fixtures/expected/Portrait_6_flip-out.jpg new file mode 100644 index 00000000..a7bd24c2 Binary files /dev/null and b/test/fixtures/expected/Portrait_6_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_6_flip_flop-out.jpg b/test/fixtures/expected/Portrait_6_flip_flop-out.jpg new file mode 100644 index 00000000..c35bbb35 Binary files /dev/null and b/test/fixtures/expected/Portrait_6_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_6_flop-out.jpg b/test/fixtures/expected/Portrait_6_flop-out.jpg new file mode 100644 index 00000000..35e7d14e Binary files /dev/null and b/test/fixtures/expected/Portrait_6_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_6_rotate180-out.jpg b/test/fixtures/expected/Portrait_6_rotate180-out.jpg new file mode 100644 index 00000000..c35bbb35 Binary files /dev/null and b/test/fixtures/expected/Portrait_6_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_6_rotate270-out.jpg b/test/fixtures/expected/Portrait_6_rotate270-out.jpg new file mode 100644 index 00000000..d7e093d8 Binary files /dev/null and b/test/fixtures/expected/Portrait_6_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_6_rotate45-out.jpg b/test/fixtures/expected/Portrait_6_rotate45-out.jpg new file mode 100644 index 00000000..713bb3ee Binary files /dev/null and b/test/fixtures/expected/Portrait_6_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_6_rotate90-out.jpg b/test/fixtures/expected/Portrait_6_rotate90-out.jpg new file mode 100644 index 00000000..cb6c108d Binary files /dev/null and b/test/fixtures/expected/Portrait_6_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_7_flip-out.jpg b/test/fixtures/expected/Portrait_7_flip-out.jpg new file mode 100644 index 00000000..3c89dc8b Binary files /dev/null and b/test/fixtures/expected/Portrait_7_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_7_flip_flop-out.jpg b/test/fixtures/expected/Portrait_7_flip_flop-out.jpg new file mode 100644 index 00000000..ee99439d Binary files /dev/null and b/test/fixtures/expected/Portrait_7_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_7_flop-out.jpg b/test/fixtures/expected/Portrait_7_flop-out.jpg new file mode 100644 index 00000000..2dba39f8 Binary files /dev/null and b/test/fixtures/expected/Portrait_7_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_7_rotate180-out.jpg b/test/fixtures/expected/Portrait_7_rotate180-out.jpg new file mode 100644 index 00000000..ee99439d Binary files /dev/null and b/test/fixtures/expected/Portrait_7_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_7_rotate270-out.jpg b/test/fixtures/expected/Portrait_7_rotate270-out.jpg new file mode 100644 index 00000000..6756e61b Binary files /dev/null and b/test/fixtures/expected/Portrait_7_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_7_rotate45-out.jpg b/test/fixtures/expected/Portrait_7_rotate45-out.jpg new file mode 100644 index 00000000..f8d60b80 Binary files /dev/null and b/test/fixtures/expected/Portrait_7_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_7_rotate90-out.jpg b/test/fixtures/expected/Portrait_7_rotate90-out.jpg new file mode 100644 index 00000000..879d2c70 Binary files /dev/null and b/test/fixtures/expected/Portrait_7_rotate90-out.jpg differ diff --git a/test/fixtures/expected/Portrait_8_flip-out.jpg b/test/fixtures/expected/Portrait_8_flip-out.jpg new file mode 100644 index 00000000..e4630027 Binary files /dev/null and b/test/fixtures/expected/Portrait_8_flip-out.jpg differ diff --git a/test/fixtures/expected/Portrait_8_flip_flop-out.jpg b/test/fixtures/expected/Portrait_8_flip_flop-out.jpg new file mode 100644 index 00000000..2f4f2ce2 Binary files /dev/null and b/test/fixtures/expected/Portrait_8_flip_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_8_flop-out.jpg b/test/fixtures/expected/Portrait_8_flop-out.jpg new file mode 100644 index 00000000..83e5e9d0 Binary files /dev/null and b/test/fixtures/expected/Portrait_8_flop-out.jpg differ diff --git a/test/fixtures/expected/Portrait_8_rotate180-out.jpg b/test/fixtures/expected/Portrait_8_rotate180-out.jpg new file mode 100644 index 00000000..2f4f2ce2 Binary files /dev/null and b/test/fixtures/expected/Portrait_8_rotate180-out.jpg differ diff --git a/test/fixtures/expected/Portrait_8_rotate270-out.jpg b/test/fixtures/expected/Portrait_8_rotate270-out.jpg new file mode 100644 index 00000000..b0bb7296 Binary files /dev/null and b/test/fixtures/expected/Portrait_8_rotate270-out.jpg differ diff --git a/test/fixtures/expected/Portrait_8_rotate45-out.jpg b/test/fixtures/expected/Portrait_8_rotate45-out.jpg new file mode 100644 index 00000000..482c70ae Binary files /dev/null and b/test/fixtures/expected/Portrait_8_rotate45-out.jpg differ diff --git a/test/fixtures/expected/Portrait_8_rotate90-out.jpg b/test/fixtures/expected/Portrait_8_rotate90-out.jpg new file mode 100644 index 00000000..695ff027 Binary files /dev/null and b/test/fixtures/expected/Portrait_8_rotate90-out.jpg differ diff --git a/test/unit/rotate.js b/test/unit/rotate.js index 6fa77f4c..a7fa3143 100644 --- a/test/unit/rotate.js +++ b/test/unit/rotate.js @@ -13,7 +13,7 @@ describe('Rotation', function () { [1, 2, 3, 4, 5, 6, 7, 8].forEach(function (exifTag) { const input = fixtures[`inputJpgWith${orientation}Exif${exifTag}`]; const expectedOutput = fixtures.expected(`${orientation}_${exifTag}-out.jpg`); - it(`Auto-rotate ${orientation} image with EXIF Orientation ${exifTag}`, function (done) { + it(`${orientation} image with EXIF Orientation ${exifTag}: Auto-rotate`, function (done) { const [expectedWidth, expectedHeight] = orientation === 'Landscape' ? [600, 450] : [450, 600]; sharp(input) .rotate() @@ -24,7 +24,7 @@ describe('Rotation', function () { fixtures.assertSimilar(expectedOutput, data, done); }); }); - it(`Auto-rotate then resize ${orientation} image with EXIF Orientation ${exifTag}`, function (done) { + it(`${orientation} image with EXIF Orientation ${exifTag}: Auto-rotate then resize`, function (done) { const [expectedWidth, expectedHeight] = orientation === 'Landscape' ? [320, 240] : [320, 427]; sharp(input) .rotate() @@ -36,7 +36,7 @@ describe('Rotation', function () { fixtures.assertSimilar(expectedOutput, data, done); }); }); - it(`Resize then auto-rotate ${orientation} image with EXIF Orientation ${exifTag}`, function (done) { + it(`${orientation} image with EXIF Orientation ${exifTag}: Resize then auto-rotate`, function (done) { const [expectedWidth, expectedHeight] = orientation === 'Landscape' ? (exifTag < 5) ? [320, 240] : [320, 240] : [320, 427]; @@ -50,6 +50,57 @@ describe('Rotation', function () { fixtures.assertSimilar(expectedOutput, data, done); }); }); + + it(`${orientation} image with EXIF Orientation ${exifTag}: Auto-orient (alias of .rotate())`, function (done) { + const [expectedWidth, expectedHeight] = orientation === 'Landscape' ? [600, 450] : [450, 600]; + sharp(input) + .autoOrient() + .toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual(info.width, expectedWidth); + assert.strictEqual(info.height, expectedHeight); + fixtures.assertSimilar(expectedOutput, data, done); + }); + }); + + [90, 180, 270, 45].forEach(function (angle) { + const [inputWidth, inputHeight] = orientation === 'Landscape' ? [600, 450] : [450, 600]; + const expectedOutput = fixtures.expected(`${orientation}_${exifTag}_rotate${angle}-out.jpg`); + it(`${orientation} image with EXIF Orientation ${exifTag}: Auto-rotate then rotate ${angle}`, function (done) { + const [width, height] = angle === 45 ? [742, 742] : [inputWidth, inputHeight]; + const [expectedWidth, expectedHeight] = angle % 180 === 0 ? [width, height] : [height, width]; + + sharp(input) + .rotate() + .rotate(angle) + .toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual(info.width, expectedWidth); + assert.strictEqual(info.height, expectedHeight); + fixtures.assertSimilar(expectedOutput, data, done); + }); + }); + }); + + [[true, true], [true, false], [false, true]].forEach(function ([flip, flop]) { + const [inputWidth, inputHeight] = orientation === 'Landscape' ? [600, 450] : [450, 600]; + const flipFlopFileName = [flip && 'flip', flop && 'flop'].filter(Boolean).join('_'); + const flipFlopTestName = [flip && 'flip', flop && 'flop'].filter(Boolean).join(' & '); + it(`${orientation} image with EXIF Orientation ${exifTag}: Auto-rotate then ${flipFlopTestName}`, function (done) { + const expectedOutput = fixtures.expected(`${orientation}_${exifTag}_${flipFlopFileName}-out.jpg`); + + const img = sharp(input).rotate(); + flip && img.flip(); + flop && img.flop(); + + img.toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual(info.width, inputWidth); + assert.strictEqual(info.height, inputHeight); + fixtures.assertSimilar(expectedOutput, data, done); + }); + }); + }); }); });