summaryrefslogtreecommitdiff
path: root/post.php
diff options
context:
space:
mode:
authorMichael Save <savetheinternet@tinyboard.org>2013-01-24 03:24:38 +1100
committerMichael Save <savetheinternet@tinyboard.org>2013-01-24 03:24:38 +1100
commita44e0571bca5a872f204e8ff886a3e24d8d84aeb (patch)
treedc7398a208d122b0becd688984ed2939c6859fce /post.php
parentcd81ae8ea586bd3a4a05b0070dcb496fa2c8bd71 (diff)
Automatically rotate and mirror images based on EXIF orientation (only compatiable with "convert" option selected at the moment)
Diffstat (limited to 'post.php')
-rw-r--r--post.php75
1 files changed, 75 insertions, 0 deletions
diff --git a/post.php b/post.php
index 124e0c65..c5e68578 100644
--- a/post.php
+++ b/post.php
@@ -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']);