
February 4th, 2004, 03:25 PM
|
|
Contributing User
|
|
Join Date: Feb 2003
Posts: 297
Time spent in forums: 9 h 15 m 2 sec
Reputation Power: 6
|
|
|
Change this PHP script to use NETPBM instead of GD
I would like to use the following script within a larger application however by server does not support GD. However I do have the NETPBM binaries installed and working. ( for info on NETPBM go to http://netpbm.sourceforge.net )
I need the following script to be modified so that it works with the NETPBM binaries insead of using GD.
PHP Code:
function thumbimage ($image, $x, $y, $aspectratio, $resize, $cachedir){
/*##############################################
# - Thumbnail-Script v1.3 - #
# Generating thumbnails 'on-the-fly' with PHP #
# #
# (c) by Christian Lamine, FlashDreams OHG #
# #
# This script may be freely used, distributed #
# and modified without any charge as long as #
# this copyright information is included. #
# #
# Any commercial selling of this script is #
# forbidden. #
# #
# The author is not responsible for possible #
# damage which may result from the application #
# of this script, neither direct nor indirect. #
# Use at your own risk! #
##############################################*/
error_reporting(0);
$types = array (1 => "gif", "jpeg", "png", "swf", "psd", "wbmp");
$not_supported_formats = array ("GIF"); // Write in capital Letters!!
umask(0);
!is_dir ($cachedir)
? mkdir ($cachedir, 0777)
: system ("chmod 0777 ".$cachedir);
(!isset ($x) || ereg ('^[0-9]{1,}$', $x, $regs)) &&
(!isset ($y) || ereg ('^[0-9]{1,}$', $y, $regs)) &&
(isset ($x) || isset ($y))
? true
: DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');
!isset ($resize) || !ereg ('^[0|1]$', $resize, $regs)
? $resize = 0
: $resize;
!isset ($aspectratio) || !ereg ('^[0|1]$', $aspectratio, $regs)
? isset ($x) && isset ($y)
? $aspectratio = 1
: $aspectratio = 0
: $aspectratio;
!isset ($image)
? DIE ('Es wurde kein Bild angegeben!')
: !file_exists($image)
? DIE ('Die angegebene Datei konnte nicht auf dem Server gefunden werden!')
: false;
$imagedata = getimagesize($image);
!$imagedata[2] || $imagedata[2] == 4 || $imagedata[2] == 5
? DIE ('Bei der angegebenen Datei handelt es sich nicht um ein Bild!')
: false;
$imgtype="!(ImageTypes() & IMG_" . strtoupper($types[$imagedata[2]]) . ")";
if ((eval($imgtype)) || (in_array(strtoupper(array_pop(explode('.', basename($image)))),$not_supported_formats))) {
$image = substr ($image, (strrpos (DIR_FS_CATALOG . '/', '/'))+1);
return $image;
}
if (!isset ($x)) $x = floor ($y * $imagedata[0] / $imagedata[1]);
if (!isset ($y)) $y = floor ($x * $imagedata[1] / $imagedata[0]);
if ($aspectratio && isset ($x) && isset ($y)) {
if ((($imagedata[1]/$y) > ($imagedata[0]/$x) )){
$x=ceil(($imagedata[0]/$imagedata[1])* $y);
} else {
$y=ceil($x/($imagedata[0]/$imagedata[1]));
}
}
$thumbfile = '/' . basename($image);
if (file_exists ($cachedir.$thumbfile)) {
$thumbdata = getimagesize ($cachedir.$thumbfile);
$thumbdata[0] == $x && $thumbdata[1] == $y
? $iscached = true
: $iscached = false;
} else {
$iscached = false;
}
if (!$iscached) {
($imagedata[0] > $x || $imagedata[1] > $y) || (($imagedata[0] < $x || $imagedata[1] < $y) && $resize)
? $makethumb = true
: $makethumb = false;
} else {
$makethumb = false;
}
if ($makethumb) {
$image = call_user_func("imagecreatefrom".$types[$imagedata[2]], $image);
$thumb = imagecreatetruecolor ($x, $y);
imagecopyresampled ($thumb, $image, 0, 0, 0, 0, $x, $y, $imagedata[0], $imagedata[1]);
call_user_func("image".$types[$imagedata[2]], $thumb, $cachedir.$thumbfile);
imagedestroy ($image);
imagedestroy ($thumb);
$image = DIR_WS_IMAGES . 'imagecache' . $thumbfile;
} else {
$iscached
? $image = DIR_WS_IMAGES . 'imagecache' . $thumbfile
: $image = substr ($image, (strrpos (DIR_FS_CATALOG . '/', '/'))+1);
}
return $image;
}
|