diff options
| author | Michael Save <savetheinternet@tinyboard.org> | 2013-01-24 03:24:38 +1100 |
|---|---|---|
| committer | Michael Save <savetheinternet@tinyboard.org> | 2013-01-24 03:24:38 +1100 |
| commit | a44e0571bca5a872f204e8ff886a3e24d8d84aeb (patch) | |
| tree | dc7398a208d122b0becd688984ed2939c6859fce | |
| parent | cd81ae8ea586bd3a4a05b0070dcb496fa2c8bd71 (diff) | |
Automatically rotate and mirror images based on EXIF orientation (only compatiable with "convert" option selected at the moment)
| -rw-r--r-- | post.php | 75 |
1 files changed, 75 insertions, 0 deletions
@@ -421,6 +421,81 @@ if (isset($_POST['delete'])) { error($config['error']['maxsize']); } + // The following code corrects the image orientation based on EXIF. + // Currently only works with the 'convert' option selected but it could easily be expanded to work with the rest if you can be bothered. + if ($config['thumb_method'] == 'convert') { + if ($post['extension'] == 'jpg' || $post['extension'] == 'jpeg') { + $exif = exif_read_data($upload); + if (isset($exif['Orientation'])) { + switch($exif['Orientation']) { + case 1: + // Normal + $args = false; + break; + case 2: + // 888888 + // 88 + // 8888 + // 88 + // 88 + + $args = '-flop'; + break; + case 3: + + // 88 + // 88 + // 8888 + // 88 + // 888888 + + $args = '-flip -flop'; + break; + case 4: + // 88 + // 88 + // 8888 + // 88 + // 888888 + + $args = '-flip'; + break; + case 5: + // 8888888888 + // 88 88 + // 88 + + $args = '-rotate 90 -flop'; + break; + case 6: + // 88 + // 88 88 + // 8888888888 + + $args = '-rotate 90'; + break; + case 7: + // 88 + // 88 88 + // 8888888888 + + $args = '-rotate "-90" -flop'; + break; + case 8: + // 8888888888 + // 88 88 + // 88 + + $args = '-rotate "-90"'; + break; + } + + if ($args) + shell_exec('convert ' . escapeshellarg($upload) . ' ' . $args . ' ' . escapeshellarg($upload)); + } + } + } + // create image object $image = new Image($upload, $post['extension']); |
