forked from extern/egroupware
if exif extension is available, use it to fetch thumbnails from jpeg or tiff files
This commit is contained in:
parent
50d87c2963
commit
baf79766a6
@ -148,7 +148,7 @@ function read_thumbnail($src)
|
|||||||
$mime = egw_vfs::mime_content_type($src);
|
$mime = egw_vfs::mime_content_type($src);
|
||||||
list($app, $icon) = explode('/', egw_vfs::mime_icon($mime), 2);
|
list($app, $icon) = explode('/', egw_vfs::mime_icon($mime), 2);
|
||||||
list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'],
|
list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'],
|
||||||
$GLOBALS['egw']->common->image($app, $icon), 2);
|
common::image($app, $icon), 2);
|
||||||
$dst = EGW_SERVER_ROOT.$path;
|
$dst = EGW_SERVER_ROOT.$path;
|
||||||
$output_mime = mime_content_type($dst);
|
$output_mime = mime_content_type($dst);
|
||||||
}
|
}
|
||||||
@ -226,12 +226,28 @@ function get_scaled_image_size($w, $h, $maxw, $maxh)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read thumbnail from image, without loading it completly using optional exif extension
|
||||||
|
*
|
||||||
|
* @param string $file
|
||||||
|
* @return boolean|resource false or a gd_image
|
||||||
|
*/
|
||||||
|
function exif_thumbnail_load($file)
|
||||||
|
{
|
||||||
|
if (!function_exists('exif_thumbnail') ||
|
||||||
|
!($image = exif_thumbnail($file)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return imagecreatefromstring($image);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the given imagefile - returns "false" if the file wasn't an image,
|
* Loads the given imagefile - returns "false" if the file wasn't an image,
|
||||||
* otherwise the gd-image is returned.
|
* otherwise the gd-image is returned.
|
||||||
*
|
*
|
||||||
* @param string $file the file which to load
|
* @param string $file the file which to load
|
||||||
* @returns false or a gd_image
|
* @returns boolean|resource false or a gd_image
|
||||||
*/
|
*/
|
||||||
function gd_image_load($file)
|
function gd_image_load($file)
|
||||||
{
|
{
|
||||||
@ -241,11 +257,14 @@ function gd_image_load($file)
|
|||||||
// Call the according gd constructor depending on the file type
|
// Call the according gd constructor depending on the file type
|
||||||
if($type == 'image')
|
if($type == 'image')
|
||||||
{
|
{
|
||||||
|
if (in_array($image_type, array('tiff','jpeg')) && ($image = exif_thumbnail_load($file)))
|
||||||
|
{
|
||||||
|
return $image;
|
||||||
|
}
|
||||||
switch ($image_type)
|
switch ($image_type)
|
||||||
{
|
{
|
||||||
case 'png':
|
case 'png':
|
||||||
return imagecreatefrompng($file);
|
return imagecreatefrompng($file);
|
||||||
case 'jpg':
|
|
||||||
case 'jpeg':
|
case 'jpeg':
|
||||||
return imagecreatefromjpeg($file);
|
return imagecreatefromjpeg($file);
|
||||||
case 'gif':
|
case 'gif':
|
||||||
@ -279,7 +298,7 @@ function get_opendocument_thumbnail($file)
|
|||||||
// Don't bother if they're using tiny thumbnails
|
// Don't bother if they're using tiny thumbnails
|
||||||
if(get_maxsize() < 64) return false;
|
if(get_maxsize() < 64) return false;
|
||||||
|
|
||||||
list($type, $file_type) = explode('/', egw_vfs::mime_content_type($file));
|
list(, $file_type) = $mimetype = explode('/', egw_vfs::mime_content_type($file));
|
||||||
|
|
||||||
// Image is already there, but we can't access them directly through VFS
|
// Image is already there, but we can't access them directly through VFS
|
||||||
$ext = $mimetype == 'application/vnd.oasis.opendocument.text' ? '.odt' : '.ods';
|
$ext = $mimetype == 'application/vnd.oasis.opendocument.text' ? '.odt' : '.ods';
|
||||||
@ -309,10 +328,6 @@ function get_opendocument_thumbnail($file)
|
|||||||
case 'vnd.oasis.opendocument.database':
|
case 'vnd.oasis.opendocument.database':
|
||||||
$filter_color = array(83,2,96); break;
|
$filter_color = array(83,2,96); break;
|
||||||
}
|
}
|
||||||
if($colors[$image_type])
|
|
||||||
{
|
|
||||||
$filter_color = $colors[$image_type];
|
|
||||||
}
|
|
||||||
imagefilter($mask, IMG_FILTER_COLORIZE, $filter_color[0],$filter_color[1],$filter_color[2] );
|
imagefilter($mask, IMG_FILTER_COLORIZE, $filter_color[0],$filter_color[1],$filter_color[2] );
|
||||||
imagecopyresampled($image, $mask,0,0,0,0,imagesx($image),imagesy($image),imagesx($mask),imagesy($mask));
|
imagecopyresampled($image, $mask,0,0,0,0,imagesx($image),imagesy($image),imagesx($mask),imagesy($mask));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user