}
}
+if (! function_exists('getPreview')) {
function getPreview($imgFile, $maxSize = THUMB_SIZE)
{
# example: data/myalbum/100.mypic.jpg
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);
# 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;
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);
return $newImgFile;
}
+}
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");