2011-10-02 14:24:02 +04:00
< ? php
2012-01-08 14:01:25 +04:00
/**
* ownCloud - gallery application
*
* @ author Bartek Przybylski
* @ copyright 2012 Bartek Przybylski bart . p . pl @ gmail . com
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation ; either
* version 3 of the License , or any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library . If not , see < http :// www . gnu . org / licenses />.
*
*/
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
function CroppedThumbnail ( $imgSrc , $thumbnail_width , $thumbnail_height ) { //$imgSrc is a FILE - Returns an image resource.
//getting the image dimensions
list ( $width_orig , $height_orig ) = getimagesize ( $imgSrc );
switch ( strtolower ( substr ( $imgSrc , strrpos ( $imgSrc , '.' ) + 1 ))) {
case " jpeg " :
case " jpg " :
$myImage = imagecreatefromjpeg ( $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 );
$thumb = imagecreatetruecolor ( $thumbnail_width , $thumbnail_height );
imagecopyresampled ( $thumb , $process , 0 , 0 , ( $x_mid - ( $thumbnail_width / 2 )), ( $y_mid - ( $thumbnail_height / 2 )), $thumbnail_width , $thumbnail_height , $thumbnail_width , $thumbnail_height );
imagedestroy ( $process );
imagedestroy ( $myImage );
return $thumb ;
}
$box_size = 200 ;
$album_name = $_GET [ 'album' ];
$x = $_GET [ 'x' ];
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 ));
$x = min (( int )( $x / ( $box_size / $result -> numRows ())), $result -> numRows () - 1 ); // get image to display
$result -> seek ( $x ); // never throws
$path = $result -> fetchRow ();
$path = $path [ 'file_path' ];
$tmp = OC :: $CONFIG_DATADIRECTORY . $path ;
$imagesize = getimagesize ( $tmp );
header ( 'Content-Type: image/png' );
$image = CroppedThumbnail ( $tmp , $box_size , $box_size );
imagepng ( $image );
imagedestroy ( $image );
?>