2011-10-02 14:24:02 +04:00
< ? php
2011-09-26 00:32:08 +04:00
require_once ( '../../../lib/base.php' );
2011-10-06 23:22:01 +04:00
OC_JSON :: checkLoggedIn ();
OC_JSON :: checkAppEnabled ( 'gallery' );
2011-09-26 00:32:08 +04:00
2011-10-01 13:26:47 +04:00
function CroppedThumbnail ( $imgSrc , $thumbnail_width , $thumbnail_height , $tgtImg , $shift ) {
//getting the image dimensions
list ( $width_orig , $height_orig ) = getimagesize ( $imgSrc );
switch ( strtolower ( substr ( $imgSrc , strrpos ( $imgSrc , '.' ) + 1 ))) {
case " jpeg " :
case " jpg " :
case " tiff " :
$myImage = imagecreatefromjpeg ( $imgSrc );
break ;
case " png " :
$myImage = imagecreatefrompng ( $imgSrc );
break ;
default :
exit ();
}
$ratio_orig = $width_orig / $height_orig ;
if ( $thumbnail_width / $thumbnail_height > $ratio_orig ) {
$new_height = $thumbnail_width / $ratio_orig ;
$new_width = $thumbnail_width ;
} else {
$new_width = $thumbnail_height * $ratio_orig ;
$new_height = $thumbnail_height ;
}
$x_mid = $new_width / 2 ; //horizontal middle
$y_mid = $new_height / 2 ; //vertical middle
$process = imagecreatetruecolor ( round ( $new_width ), round ( $new_height ));
imagecopyresampled ( $process , $myImage , 0 , 0 , 0 , 0 , $new_width , $new_height , $width_orig , $height_orig );
imagecopyresampled ( $tgtImg , $process , $shift , 0 , ( $x_mid - ( $thumbnail_width / 2 )), ( $y_mid - ( $thumbnail_height / 2 )), $thumbnail_width , $thumbnail_height , $thumbnail_width , $thumbnail_height );
imagedestroy ( $process );
imagedestroy ( $myImage );
}
$box_size = 200 ;
$album_name = $_GET [ 'album_name' ];
2011-09-26 00:32:08 +04:00
2011-10-05 21:32:30 +04:00
$stmt = OC_DB :: prepare ( 'SELECT `file_path` FROM *PREFIX*gallery_photos,*PREFIX*gallery_albums WHERE *PREFIX*gallery_albums.`uid_owner` = ? AND `album_name` = ? AND *PREFIX*gallery_photos.`album_id` = *PREFIX*gallery_albums.`album_id`' );
2011-09-26 00:32:08 +04:00
$result = $stmt -> execute ( array ( OC_User :: getUser (), $album_name ));
2011-10-01 13:26:47 +04:00
$numOfItems = min ( $result -> numRows (), 10 );
$targetImg = imagecreatetruecolor ( $numOfItems * $box_size , $box_size );
$counter = 0 ;
while (( $i = $result -> fetchRow ()) && $counter < $numOfItems ) {
$imagePath = OC :: $CONFIG_DATADIRECTORY . $i [ 'file_path' ];
CroppedThumbnail ( $imagePath , $box_size , $box_size , $targetImg , $counter * $box_size );
$counter ++ ;
2011-09-26 00:32:08 +04:00
}
2011-10-01 13:26:47 +04:00
header ( 'Content-Type: image/png' );
2011-09-26 00:32:08 +04:00
2011-10-02 21:42:14 +04:00
$offset = 3600 * 24 ;
// calc the string in GMT not localtime and add the offset
header ( " Expires: " . gmdate ( " D, d M Y H:i:s " , time () + $offset ) . " GMT " );
header ( 'Cache-Control: max-age=3600, must-revalidate' );
header ( 'Pragma: public' );
2011-10-01 13:26:47 +04:00
imagepng ( $targetImg );
imagedestroy ( $targetImg );
2011-09-26 00:32:08 +04:00
?>