Browse Source

Automatically rotate and mirror images based on EXIF orientation (only compatiable with "convert" option selected at the moment)

main
Michael Save 12 years ago
parent
commit
a44e0571bc
  1. 75
      post.php

75
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']);

Loading…
Cancel
Save