-
Notifications
You must be signed in to change notification settings - Fork 2
/
autorotate.php
99 lines (63 loc) · 2.6 KB
/
autorotate.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
function autoRotateImage($image) {
$orientation = $image->getImageOrientation();
if ($orientation != imagick::ORIENTATION_UNDEFINED) {
switch($orientation) {
case imagick::ORIENTATION_TOPLEFT;
//Nothing needed
break;
case imagick::ORIENTATION_TOPRIGHT;
$image->flopImage(); // Creates a vertical mirror image by reflecting the pixels around the central y-axis.
break;
case imagick::ORIENTATION_BOTTOMRIGHT:
$image->rotateimage("#000", 180); // rotate 180 degrees
break;
case imagick::ORIENTATION_BOTTOMLEFT;
$image->flipImage(); // Creates a vertical mirror image by reflecting the pixels around the central x-axis.
break;
case imagick::ORIENTATION_LEFTTOP;
$image->rotateimage("#000", 90); // rotate 90 degrees CW
$image->flopImage(); // Creates a vertical mirror image by reflecting the pixels around the central y-axis.
break;
case imagick::ORIENTATION_RIGHTTOP:
$image->rotateimage("#000", 90); // rotate 90 degrees CW
break;
case imagick::ORIENTATION_RIGHTBOTTOM:
$image->rotateimage("#000", -90); // rotate 90 degrees CW
$image->flopImage(); // Creates a vertical mirror image by reflecting the pixels around the central y-axis.
break;
case imagick::ORIENTATION_LEFTBOTTOM:
$image->rotateimage("#000", -90); // rotate 90 degrees CCW
break;
}
// Now make sure the EXIF data is correct
$image->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
}
}
function rotateImage($filename) {
$image = new Imagick($filename);
autoRotateImage($image);
$image->writeImage($filename);
}
if (detect::imagick()) {
kirby()->hook('panel.file.*', function($file, $oldFile = null) {
if (c::get('autorotate.enabled', true)) {
$filepath = kirby()->roots()->content() . DS . $file->diruri();
if (is_image($filepath)) {
rotateImage($filepath);
}
}
});
} else {
die('<span style="color:red;">Imageick</span> needs to be installed for the <strong>AutoRotate</strong> plugin to work.');
}