pandorafms/pandora_console/include/Image/image_functions.php

112 lines
3.5 KiB
PHP

<?php
/**
* @category Images
* @package Image_Graph
*/
/**
* Pandora FMS - http://pandorafms.com
* ==================================================
* Copyright (c) 2005-2009 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program 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 General Public License for more details.
*/
//INI Lines of code for direct url call script
if (isset($_GET['getFile'])) {
$file = $_GET['file'];
if (isset($_GET['thumb'])) {
if (!isset($_GET['thumb_size'])) {
$newWidth = $newHeight = '50%';
}
else {
$new_size_values = explode('x',$_GET['thumb_size']);
$newWidth = (integer) $new_size_values[0];
$newHeight = (integer) $new_size_values[1];
}
$temp = explode("/", $file);
$fileName = end($temp);
$fileTemp = sys_get_temp_dir() . "/tumb_" . $newWidth . "x" . $newHeight . "_" . $fileName;
if (is_file($fileTemp)) {
if (!is_readable($fileTemp)) {
$fileTemp = sys_get_temp_dir() . "/tumb_" . $newWidth . "x" . $newHeight . "_" . uniqid() . "_" . $fileName;
createthumb( $_SERVER['DOCUMENT_ROOT'] . $file, $fileTemp,$newWidth,$newHeight);
}
}
else createthumb($file, $fileTemp,$newWidth,$newHeight);
getFile($fileName, $fileTemp);
unlink($fileTemp);
}
}
//END Lines of code for direct url call script
/**
* Get a file change http header and write as binary output for
* redirect to file content.
*
* @param string destFileName Name for rename file when the browser get the file.
* @param string fileLocation The real location the file in server.
*/
function getFile ($destFileName,$fileLocation) {
error_reporting(0);
// NOTICE: mime_conent_type() IS NOT SUPPORTED IN PHP >= 5.2.11 anymore
// THIS DOESNT WORK ON SUSE 11.x !
// header('Content-type: aplication/octet-stream;');
// header('Content-type: ' . mime_content_type($fileLocation) . ';');
// header( "Content-Length: " . filesize($fileLocation));
// header('Content-Disposition: attachment; filename="' . $destFileName . '"');
// Do not send any header, rely on browser
readfile($fileLocation);
}
/**
* Create a thumb of image file in filesystem of server.
* @param string origFileName Original image
* @param string destFileName Thumb image
* @param integer newWidth Thumb width
* @param integer newHeight Thumb height
*/
function createthumb ($origFileName, $destFileName, $newWidth, $newHeight) {
//TODO $newWidth and $newHeight values as percent.
preg_match("/\.(jpg|jpeg|png)$/", $origFileName, $match);
$extension = '';
if (!empty($match))
$extension = $match[1];
if (preg_match ("/jpg|jpeg/", $extension))
$src_img = imagecreatefromjpeg($origFileName);
if (preg_match ("/png/", $extension))
$src_img = imagecreatefrompng($origFileName);
$oldWidth = imageSX($src_img);
$oldHeight = imageSY($src_img);
$dst_img = ImageCreateTrueColor($newWidth, $newHeight);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newWidth, $newHeight, $oldWidth, $oldHeight);
if (preg_match("/png/", $extension))
imagepng($dst_img,$destFileName);
else
imagejpeg($dst_img,$destFileName);
imagedestroy($dst_img);
imagedestroy($src_img);
}
?>