123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- class elFinderPluginAutoRotate extends elFinderPlugin {
- public function __construct($opts) {
- $defaults = array(
- 'enable' => true,
- 'quality' => 95,
- 'offDropWith' => null,
-
-
- 'disableWithContentSaveId' => true
- );
- $this->opts = array_merge($defaults, $opts);
- }
- public function onUpLoadPreSave(&$thash, &$name, $src, $elfinder, $volume) {
- $opts = $this->getCurrentOpts($volume);
-
- if (! $this->iaEnabled($opts, $elfinder)) {
- return false;
- }
-
- $imageType = null;
- $srcImgInfo = null;
- if (extension_loaded('fileinfo') && function_exists('mime_content_type')) {
- $mime = mime_content_type($src);
- if (substr($mime, 0, 5) !== 'image') {
- return false;
- }
- }
- if (extension_loaded('exif') && function_exists('exif_imagetype')) {
- $imageType = exif_imagetype($src);
- } else {
- $srcImgInfo = getimagesize($src);
- if ($srcImgInfo === false) {
- return false;
- }
- $imageType = $srcImgInfo[2];
- }
-
-
- if ($imageType !== IMAGETYPE_JPEG) {
- return false;
- }
-
- if (! $srcImgInfo) {
- $srcImgInfo = getimagesize($src);
- }
-
- return $this->rotate($volume, $src, $srcImgInfo, $opts['quality']);
- }
-
- private function rotate($volume, $src, $srcImgInfo, $quality) {
- if (! function_exists('exif_read_data')) {
- return false;
- }
- $degree = 0;
- $exif = exif_read_data($src);
- if($exif && !empty($exif['Orientation'])) {
- switch($exif['Orientation']) {
- case 8:
- $degree = 270;
- break;
- case 3:
- $degree = 180;
- break;
- case 6:
- $degree = 90;
- break;
- }
- }
- $opts = array(
- 'degree' => $degree,
- 'jpgQuality' => $quality,
- 'checkAnimated' => true
- );
- return $volume->imageUtil('rotate', $src, $opts);
- }
- }
|