X-Git-Url: http://positon.org/gitweb/?p=bizou.git;a=blobdiff_plain;f=functions.php;h=867bb4997d6a936906a15844a6fc36020ea9e47a;hp=b60543edd3e88e2de0b4176d498e989cd061e0f5;hb=61e81e087eb8a83076870360678fe96a733447e6;hpb=f4524fe07bd5f8534e9b6999a89d16700278fb58 diff --git a/functions.php b/functions.php index b60543e..867bb49 100644 --- a/functions.php +++ b/functions.php @@ -32,6 +32,7 @@ function getImageLink($imageSimplePath) } } +if (! function_exists('getPreview')) { function getPreview($imgFile, $maxSize = THUMB_SIZE) { # example: data/myalbum/100.mypic.jpg @@ -49,10 +50,13 @@ function getPreview($imgFile, $maxSize = THUMB_SIZE) set_time_limit(20); $ext = strtolower(substr($imgFile, -4)); - if ($ext == ".jpg") + if ($ext == ".jpg") { $img = imagecreatefromjpeg($imgFile); - else + $exif = exif_read_data($imgFile); + } else { $img = imagecreatefrompng($imgFile); + } + if ($img === false) return ""; #read error (wrong permission...) $w = imagesx($img); $h = imagesy($img); @@ -66,7 +70,8 @@ function getPreview($imgFile, $maxSize = THUMB_SIZE) # config to allow group writable files umask(DATA_UMASK); # create the thumbs directory recursively - if (! is_dir(dirname($newImgFile))) mkdir(dirname($newImgFile), 0777, true); + if (! is_dir(dirname($newImgFile))) @mkdir(dirname($newImgFile), 0777, true) + or die("Could not write in data dir. Please fix permissions."); if ($w > $h) { $newW = $maxSize; @@ -80,10 +85,17 @@ function getPreview($imgFile, $maxSize = THUMB_SIZE) imagecopyresampled($newImg, $img, 0, 0, 0, 0, $newW, $newH, $w, $h); - if ($ext == ".jpg") - imagejpeg($newImg, $newImgFile); - else + if ($ext == ".jpg") { + if (!empty($exif['Orientation'])) { + $orientation = $exif['Orientation']; + if ($orientation === 3) $newImg = imagerotate($newImg, 180, 0); + elseif ($orientation === 6) $newImg = imagerotate($newImg, -90, 0); + elseif ($orientation === 8) $newImg = imagerotate($newImg, 90, 0); + } + imagejpeg($newImg, $newImgFile, JPEG_QUALITY); + } else { imagepng($newImg, $newImgFile); + } imagedestroy($img); imagedestroy($newImg); @@ -91,6 +103,7 @@ function getPreview($imgFile, $maxSize = THUMB_SIZE) return $newImgFile; } +} function getAlbumPreview($dir) { @@ -106,10 +119,11 @@ function getAlbumPreview($dir) # config to allow group writable files umask(DATA_UMASK); # create the thumbs directory recursively - if (! is_dir(dirname($previewFile))) mkdir(dirname($previewFile), 0777, true); + if (! is_dir(dirname($previewFile))) @mkdir(dirname($previewFile), 0777, true) + or die("Could not write in data dir. Please fix permissions."); // no preview: look for a preview in current dir, write it, return it - foreach (scandir($dir) as $file) if ($file != '.' and $file != '..') { + foreach (scandir($dir) as $file) if ($file[0] != '.') { $ext = strtolower(substr($file, -4)); if ($ext == ".jpg" or $ext == ".png") { $thumb = getPreview("$dir/$file");