X-Git-Url: http://positon.org/gitweb/?p=bizou.git;a=blobdiff_plain;f=functions.php;h=867bb4997d6a936906a15844a6fc36020ea9e47a;hp=162b01e0b861a4a5e00d5b71e5323bbe19901a06;hb=61e81e087eb8a83076870360678fe96a733447e6;hpb=b497c8ebcab3d91b552b3ada2ea6e5658ba9952c diff --git a/functions.php b/functions.php index 162b01e..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); @@ -63,10 +67,11 @@ function getPreview($imgFile, $maxSize = THUMB_SIZE) return $imgFile; } - # uncomment this if you need group writable files - #umask(0002); + # 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) { @@ -103,13 +116,14 @@ function getAlbumPreview($dir) } else if (is_file("$previewFile.png")) { return "$previewFile.png"; } else { - # uncomment this if you need group writable files - #umask(0002); + # 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");