| 1 |
jonen |
1.1 |
<?php |
| 2 |
|
|
// Image thumbnail0r (with an "0" :]) |
| 3 |
|
|
// mike[@]filespanker.com |
| 4 |
|
|
// |
| 5 |
|
|
// PARAMETERS: |
| 6 |
|
|
// |
| 7 |
|
|
// img: |
| 8 |
|
|
// The image file as relative to THIS script. |
| 9 |
|
|
// h: |
| 10 |
|
|
// The thumbnail's height. Default: 30 |
| 11 |
|
|
// w: |
| 12 |
|
|
// The thumbnail's width. Default: 30 |
| 13 |
|
|
// mode: |
| 14 |
|
|
// 1 = stretch: The image is resized to height and width |
| 15 |
|
|
|
| 16 |
|
|
// 0[default] = proportioned: The image is shrunken, but keeps proportions |
| 17 |
|
|
// type: |
| 18 |
|
|
// [optional] |
| 19 |
|
|
// jpg = JPEG |
| 20 |
|
|
// gif = GIF |
| 21 |
|
|
// png = PNG |
| 22 |
|
|
// If this is not set, it is determined by its file extension. |
| 23 |
|
|
// |
| 24 |
|
|
// This script's functions rely completely on your gd lib version. |
| 25 |
|
|
// |
| 26 |
|
|
// So, if I recall correctly: |
| 27 |
|
|
// gd v1.5 or lower : GIF |
| 28 |
|
|
// gd v1.6 or higher: PNG |
| 29 |
|
|
// gd v1.8 or higher: PNG and JPEG |
| 30 |
|
|
// |
| 31 |
|
|
// So, all three image types should never work on the same gd lib :[ |
| 32 |
|
|
// You can thank Unisys for that. |
| 33 |
|
|
// |
| 34 |
|
|
// Before mailing me, please actually look at the code. |
| 35 |
|
|
//Theres not much I could have really screwed up, and its probably an |
| 36 |
|
|
// issue with your gd library. Try up/downgrading it. |
| 37 |
|
|
|
| 38 |
|
|
// Configuration: |
| 39 |
|
|
|
| 40 |
|
|
|
| 41 |
|
|
//// CODE |
| 42 |
|
|
|
| 43 |
|
|
if( !isset($w) ) { |
| 44 |
|
|
$w = 50; |
| 45 |
|
|
} |
| 46 |
|
|
|
| 47 |
|
|
if( !isset($h) ) { |
| 48 |
|
|
$h = 50; |
| 49 |
|
|
} |
| 50 |
|
|
|
| 51 |
|
|
|
| 52 |
|
|
SetType($mode, 'integer'); |
| 53 |
|
|
SetType($w, 'integer'); |
| 54 |
|
|
SetType($h, 'integer'); |
| 55 |
|
|
SetType($img, 'string' ); |
| 56 |
|
|
|
| 57 |
|
|
function percent($p, $w) { |
| 58 |
|
|
return(real)(100 * ($p / $w)); |
| 59 |
|
|
} |
| 60 |
|
|
|
| 61 |
|
|
function unpercent($percent, $whole) { |
| 62 |
|
|
return(real)(($percent * $whole) / 100); |
| 63 |
|
|
} |
| 64 |
|
|
|
| 65 |
|
|
// Initialization |
| 66 |
|
|
|
| 67 |
|
|
// Make sure the file exists... |
| 68 |
|
|
if( !file_exists($img) ) { |
| 69 |
|
|
echo "Error: could not find file: $img."; |
| 70 |
|
|
exit(); |
| 71 |
|
|
} |
| 72 |
|
|
|
| 73 |
|
|
// If the user defined a type to use. |
| 74 |
|
|
if( !isset($type) ) { |
| 75 |
|
|
$ext = explode('.', $img); |
| 76 |
|
|
$ext = $ext[count($ext)-1]; |
| 77 |
|
|
switch( strtolower($ext) ) { |
| 78 |
|
|
case 'jpeg' : |
| 79 |
|
|
$type = 'jpg'; |
| 80 |
|
|
break; |
| 81 |
|
|
default : |
| 82 |
|
|
$type = $ext; |
| 83 |
|
|
break; |
| 84 |
|
|
} |
| 85 |
|
|
} |
| 86 |
|
|
|
| 87 |
|
|
// Create the image... |
| 88 |
|
|
switch( strtolower($type) ) { |
| 89 |
|
|
case 'jpg': |
| 90 |
|
|
$tmp = imagecreatefromjpeg($img); |
| 91 |
|
|
break; |
| 92 |
|
|
|
| 93 |
|
|
case 'gif': |
| 94 |
|
|
$tmp = @imagecreatefromgif($img); |
| 95 |
|
|
break; |
| 96 |
|
|
|
| 97 |
|
|
case 'png': |
| 98 |
|
|
$tmp = @imagecreatefrompng($img); |
| 99 |
|
|
break; |
| 100 |
|
|
|
| 101 |
|
|
default: |
| 102 |
|
|
echo 'Error: Unrecognized image format.'; |
| 103 |
|
|
exit(); |
| 104 |
|
|
break; |
| 105 |
|
|
} |
| 106 |
|
|
|
| 107 |
|
|
if( $tmp ) { |
| 108 |
|
|
// Resize it |
| 109 |
|
|
|
| 110 |
|
|
$ow = imagesx ($tmp); // Original image width |
| 111 |
|
|
$oh = imagesy ($tmp); // Original image height |
| 112 |
|
|
|
| 113 |
|
|
if( $mode ) { |
| 114 |
|
|
// Just smash it up to fit the dimensions |
| 115 |
|
|
$nw = $w; |
| 116 |
|
|
$nh = $h; |
| 117 |
|
|
} else { |
| 118 |
|
|
// Make it proportional. |
| 119 |
|
|
if( $ow > $oh ) { |
| 120 |
|
|
$nw = $w; |
| 121 |
|
|
$nh = unpercent(percent($nw, $ow), $oh); |
| 122 |
|
|
} else if( $oh > $ow ) { |
| 123 |
|
|
$nh = $h; |
| 124 |
|
|
$nw = unpercent(percent($nh, $oh), $ow); |
| 125 |
|
|
} else { |
| 126 |
|
|
$nh = $h; |
| 127 |
|
|
$oh = $w; |
| 128 |
|
|
} |
| 129 |
|
|
} |
| 130 |
|
|
|
| 131 |
|
|
$out = imagecreate($nw, $nh); |
| 132 |
|
|
imagecopyresized($out, $tmp, 0, 0, 0, 0, $nw, $nh, $ow, $oh); |
| 133 |
|
|
imagedestroy($tmp); |
| 134 |
|
|
} else { |
| 135 |
|
|
echo 'Could not create image resource.'; |
| 136 |
|
|
exit; |
| 137 |
|
|
} |
| 138 |
|
|
|
| 139 |
|
|
|
| 140 |
|
|
if( $out ) { |
| 141 |
|
|
switch( strtolower($type) ) { |
| 142 |
|
|
case 'jpg': |
| 143 |
|
|
header('Content-type: image/jpeg'); |
| 144 |
|
|
imagejpeg($out); |
| 145 |
|
|
break; |
| 146 |
|
|
|
| 147 |
|
|
case 'gif': |
| 148 |
|
|
header('Content-type: image/gif'); |
| 149 |
|
|
imagegif($out); |
| 150 |
|
|
break; |
| 151 |
|
|
|
| 152 |
|
|
case 'png': |
| 153 |
|
|
header('Content-type: image/png'); |
| 154 |
|
|
imagepng($out); |
| 155 |
|
|
break; |
| 156 |
|
|
} |
| 157 |
|
|
imagedestroy($out); |
| 158 |
|
|
} else { |
| 159 |
|
|
echo 'ERROR: Could not create resized image.'; |
| 160 |
|
|
} |
| 161 |
|
|
?> |
| 162 |
|
|
|