1//////////////////////////////////////////////////////////////////
2//   phpThumb() by James Heinrich <info@silisoftware.com>       //
3//        available at http://phpthumb.sourceforge.net          //
4//             and/or https://github.com/JamesHeinrich/phpThumb //
5//////////////////////////////////////////////////////////////////
6
7¤ = structure change or important new feature
8* = less important new feature or change
9
10v1.7.19-202210110924
11  ¤ #193 Composer - script hsp-generate for generate High Security Password
12  * [bugfix: #196] PHP8 compatibility
13  * [bugfix: #191] IMAGETYPE_AVIF not defined
14
15v1.7.18-202208061319
16  ¤ add support for AVIF image format (requires PHP 8.1.0) for native PHP support.
17  * [bugfix: G190] ensure that all used IMG_ and IMAGETYPE_ constants are always defined.
18  * [bugfix: G188] fix some potential null-parameter warnings
19  * [bugfix: G187] PHP8 compatibility
20  * [bugfix: G185] PHP8 compatibility
21  * [bugfix: G183] better message auth
22
23v1.7.17-202109221111
24  * [bugfix: G171] problem with class_exists and autoloading
25  * [bugfix: G173] file_get_contents instead of readfile
26  * [bugfix: G178] missing quality parameter in webp
27  * [bugfix: G181] missing webp in ImageCreateFromFilename
28
29v1.7.16-202012161640
30  ¤ PHP 8.0 compatibility
31  * [bugfix: G168] bad call to $this inside static function
32  * [bugfix: G167] realPathSafe() issues on Windows
33  * [bugfix: G164] open_basedir on Windows prevents caching
34  * [bugfix: G155] PHP 7.4 compatibility
35  * [bugfix: G154] regex for external image source
36
37v1.7.15-202004301145
38  ¤ PHP 7.4 curly brace substring compatibility
39  ¤ add basic support for WebP
40  * [bugfix: G18] fopen() fails when using remote images from SSL
41  * [bugfix: G65] ImageMagick -flatten vs PNG transparency
42  * [bugfix: G75] improved InitializeTempDirSetting
43  * [bugfix: G76] fix memory limit detection
44  * [bugfix: G78] AllowOutputEnlargement and Zoom-Crop
45  * [bugfix: G90] missing $PHPTHUMB_CONFIG
46  * [bugfix: G91] missing config_ prefix in allow_local_http_src
47  * [bugfix: G93] ImageMagick unsharp amount/threshold
48  * [bugfix: G94] cannot declare class phpthumb_functions
49  * [bugfix: G96] language level migration fixes
50  * [bugfix: G108] add 'line-height' for text in image
51  * [bugfix: G113] fix PNGs losing transparency
52  * [bugfix: G123] improved default thumbnail filename
53  * [bugfix: G126] overlay on transparent image
54  * [bugfix: G133] fix 'wmi' and 'wmt' filters
55  * [bugfix: G134] fix fsockopen http status text
56  * [bugfix: G140] parse_url return user/pass
57  * [bugfix: G142] allow transparent background when using 'far'
58  * [bugfix: G144] fix class_exists
59  * [bugfix: G149] magic quotes deprecated in PHP 7.4.2
60  * bugfix: ImageMagick v7+ parameter order (in, op, out)
61
62v1.7.14-201608101311
63  ¤ improved PHP7 compatability
64  * [bugfix: #1021] demo.gallery updates for phpThumbURL
65  * [bugfix: G65] PNG transparency
66  * [bugfix: G70] set a default timezone if one is not set
67  * [bugfix: G69] overlay margins
68  * [bugfix: G66] lowercase all PHP function names
69  * [bugfix: G64] Can't put thumbnail into a frame
70  * [bugfix: #1014] PDF thumbnail not rendered correctly
71  * [bugfix: #1008] phpThumbURL accept array parameters
72  * [bugfix: #988] mysqli support in demo
73  * [bugfix: G41] fail when memory_limit = -1
74  * [bugfix: G35] no temp directory set
75  * [bugfix: G33] realpath not working on some systems
76  * [bugfix: #991] ImprovedImageRotate not static
77  * set Last-Modified header on all requests
78  * [bugfix: G19] phpThumbURL() rawurlencode
79  * [bugfix: G26] ImageInterlace in RenderOutput()
80  * [bugfix: #775] file_exists_ignoreopenbasedir
81  * escapeshellarg disabled workaround
82  * [bugfix: #977] $PHPTHUMB_DEFAULTS not working
83  * [bugfix: G24] enable ImagePNG quality
84  * [bugfix: G25] escapeshellarg may exist but be disabled
85
86v1.7.13-201406261000 - June 26, 2014
87  * Bugfix: incorrect variable name in phpThumb.php could prevent
88    all hash values from matching
89
90
91v1.7.12-201406260900 - June 26, 2014
92  ¤ high_security_mode enabled by default and strongly recommended
93  ¤ debug mode must be disabled to allow thumbnail generation
94    Thanks to Rafay Baloch (www.rafayhackingarticles.net) for
95    recommending some security configuration changes
96  * default config_cache_directory_depth is now 2 (was 4)
97  * Bugfix: temp files used with ImageMagick might not get deleted
98    from cache directory
99  * Bugfix (G:17): 'far' parameter not working as intended
100  * Bugfix (G:16): $PHPTHUMB_DEFAULTS configuration ignored
101  * Bugfix (G:15): $PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE logic wrong
102  * Bugfix (G:11): config_cache_maxsize does not count wasted space
103  * Bugfix (G:10): error images ignored relevant config options
104  * Bugfix (#962): support symlinked subfolders for image source
105  * Bugfix (#934): source image region (sx/sy/sw/sh) did not work
106    when using ImageMagick
107  * Bugfix (#925): add configurable URL separator
108  * Bugfix (#921): non-static phpUnsharpMask::applyUnsharpMask()
109  * Bugfix (#920): $PHPTHUMB_DEFAULTS with array value gives
110    array-to-string PHP error
111  * Bugfix (#909): unnecessary calls of shell commands when cached
112  * Bugfix (#618): cached files inside subdirs won't be deleted
113  * Bugfix (#594): ImageMagick variants not detected (e.g. OpenMP)
114
115
116v1.7.11-201108081344 - August 8, 2011
117  ¤ Added even more explicit escaping of command line parameters
118  ¤ $PHPTHUMB_CONFIG['high_security_password'] needs to be more
119      complex than before. Previously 5 characters length was
120      required, now password strength calculated based on character
121      type (a-z, A-Z, 0-9, other) and count.
122      See PasswordStrength() function in phpThumb.php
123  ¤ deliberate delay inserted on failed hash in high_security mode
124      to slow down brute force attempts
125  ¤ 'file' paramter removed (use object mode instead)
126  ¤ 'goto' paramter removed (use object mode instead)
127  ¤ Disable all demos by default, user will need to comment out a
128      line to run the demo
129  ¤ CleanUpCacheDirectory() is now only called once per hour, and
130      skipped entirely if cache directory is not writable
131  * Bugfix: crop broken if width or height set to 1.00
132  * Bugfix: gamma filter for ImageMagick was broken
133  * Bugfix: newer versions of ImageMagick have changed "-gaussian"
134      filter to "-gaussian-blur"
135  * Bugfix: newer versions of ImageMagick have changed date format
136      from DD/MM/YY to YYYY-MM-DD
137  * Bugfix: image not found errors when using virtual subdirectories
138  * Bugfix: assorted errors in phpThumb.demo.check.php
139  * Bugfix (#265): source images other than JPEG/PNG/GIF would not
140      generate thumbnails for remote (http) images but work locally
141  * Bugfix (#253): ImageMagick not found if outside open_basedir
142  * Bugfix (#243): port ignored in URLreadFsock()
143  * Bugfix (#240): Any temporary file created through
144    phpThumb_tempnam() is automatically deleted at the end of the
145    script via phpThumb object destructor (PHP5 only)
146  * Bugfix (#216): uninitialized string offset
147  * Bugfix (#209): don't try ImageMagick first if
148      config_prefer_imagemagick == false
149  * Bugfix (#127): CleanUpURLencoding() ignored port number
150  * Bugfix (#38): CleanUpCacheDirectory() ignored config_cache_prefix
151  * Bugfix (#31): ExtractEXIFgetImageSize() may throw errors on non-
152      JPEG/TIFF images when calling exif_read_data()
153
154
155v1.7.10 - April 24, 2011
156  * ImageMagickVersion() returned unknown-version for versions
157    with hyphenated subversion numbers
158    (thanks r34wangØuwaterloo*ca)
159  * replace all ereg* functions with preg* equivalents for
160    PHP v5.3.0+ compatability
161  * Bugfix: security vulnerabilities when used with ImageMagick
162
163
164v1.7.9 - May 28, 2008
165  * "ra" (rotation) now handled by ImageMagick directly.
166    Note: If output to transparent-supporting format (PNG,GIF)
167    them ImageMagick support only enabled for v6.3.7 and above
168    when rotating to nonmultiples of 90° (e.g. rotate by 30°).
169    Transparent area behind rotate image buggy in v6.2.9 and
170    working fine in v6.3.7 (exact version where fixed is
171    unknown, reports welcome)
172  * Debug now shows server software version
173  * Debug now checks for GetImageSize() availability
174  * Better error message when neither ImageMagick nor GD are
175    installed on server  (thanks kevinmØbuenacg*com)
176  * Bugfix: uncaught image-too-large exception when using
177    HTTP source image and ImageMagick is unavailable or fails
178    (thanks jslaggerØjsamdirect*com)
179  * Bugfix: phpThumb could sometimes die without showing an
180    error message when using an HTTP/data image source that is
181    too large for GD processing with PHP memory limit
182    (thanks jslaggerØjsamdirect*com)
183  * Bugfix: prevent error images from clobbering debug output
184  * Bugfix: temp file for ImageMagick processing not created
185    correctly when source image is HTTP or from non-file data
186    (thanks jonahØschwartzdev*com, tsolanØgmail*com)
187  * Bugfix: Filters are only removed from the processing queue
188    if ImageMagick supports them AND returns successfully
189    (thanks tsolanØgmail*com)
190  * Bugfix: ImageCreateFromStringReplacement() doesn't need to
191    fail in safe_mode if can still write temp file somewhere
192    (thanks avatar1983Øgmail*com)
193  * Bugfix: ImageMagickThumbnailToGD() doesn't need to
194    fail in safe_mode if can still write temp file somewhere
195    (thanks avatar1983Øgmail*com)
196  * Bugfix: better error messages when safe_mode enabled and
197    using MySQL database for image source
198    (thanks avatar1983Øgmail*com)
199  * Bugfix: "wmt" alignment broken for built-in fonts
200    (thanks mailØmmjaeger*com)
201  * Bugfix: CleanUpCacheDirectory() has some undefined
202    variables that might have been the cause of the images-
203    don't-show-on-first-page-load bug
204    (thanks hgØdynweb*net)
205  * Bugfix: phpThumb.php would not correctly skip unneeded
206    processing if source image was smaller than target size
207    (thanks adam*kingØcarnegiecycling*com*au)
208  * Bugfix: phpThumb.demo.check.php incorrectly calculated
209    age of ImageMagick version (for versions < 180 days old)
210
211
212v1.7.8 - September 16, 2007
213  ¤ Added 'stc' (Source Transparent Color) filter
214    (Feature Request #1672440)
215  ¤ 'zc' now supports directed crop (top/bottom/left/right)
216    (thanks leeØvirtualinkdesign*com, chrisØsostreassoc*com)
217  ¤ new class function resetObject() should be used to reset
218    default class paramters to default to allow reusing a
219    single object on multiple images
220    (see phpThumb.demo.object.php)
221    (thanks bjohnsonØaccomplishhosting*com)
222  ¤ "wmt" and "wmi" filters now support absolute positioning
223    using alignment values: {xoffset}x{yoffset} (eg: "10x20")
224    (Feature Request #1567113)
225    (thanks mailØpedrocandeias*com;
226     squidlibertyØusers*sourceforge*net)
227  ¤ "wmi" filter now supports watermark scaling & rotation
228    (Feature Request #1788063)
229    (thanks glen*fiebichØ2020promo*com)
230  ¤ Added "size" filter.  NOTE: try not to use this filter,
231    it is inefficient and for special purposes only, please
232    see phpthumb.readme.txt entry before using.
233    (thanks glen*fiebichØ2020promo*com)
234  * Added wildcard domain options for config settings
235    nooffsitelink_valid_domains and nohotlink_valid_domains
236    (thanks meØjohannes*jarolim*com)
237  * Output image format defaults to input format (based on
238    filename)  (thanks bjohnsonØaccomplishhosting*com)
239  * Sepia filter now uses ImageFilter under PHP5
240    (thanks richard*comleyØmademedia*co*uk)
241  * "f" parameters now accepts formats with leading "."
242    (eg "&f=.png") to allow you to fool things that look at
243    the last characters of the URL to determine image type
244    (thanks alexØalexderas*nl)
245  * Added section to phpthumb.demo.check.php to test cache
246    file creation and deletion
247  * Bugfix [#1715256]: ImageMagick output not always used
248    if fltr set incorrectly
249    (thanks danakiØusers*sourceforge*net)
250  * Bugfix [#1541673]: ResolveFilenameToAbsolute() fails in
251    RenderToFile() if target file does not exist
252    (thanks jasonpellØusers*sourceforge*net)
253  * Bugfix [#1703373]: CleanUpURLencoding() broken if path
254    element equals "0"
255    (thanks izeronØusers*sourceforge*net)
256  * Bugfix [#1573399]: phpthumb_filters::Colorize() broken
257    under PHP5  (thanks cerwØusers*sourceforge*net)
258  * Bugfix [#1573399]: ImageMagick version of colorize filter
259    missing quotes  (thanks cerwØusers*sourceforge*net)
260  * Bugfix [#1733462]: SafeExec broken
261    (thanks hansfnØusers*sourceforge*net)
262  * Bugfix [#1751821]: open_basedir restriction gives warning
263    when trying to initialize config_temp_dir
264    (thanks k-mystikØusers*sourceforge*net)
265  * Bugfix: [#1751880]: open_basedirs not initialized properly
266    under Windows  (thanks k-mystikØusers*sourceforge*net)
267  * Bugfix: "A non well formed numeric value encountered" error
268    when using "cont" filter in PHP5
269    (thanks isnbitØyahoo*com)
270  * Bugfix: Colorize filter ignored $amount under PHP5
271    (thanks richard*comleyØmademedia*co*uk)
272  * Bugfix: double-drawn color in corders of Bevel filter
273    (thanks m*westmijzeØstudent*utwente*nl)
274  * Bugfix: 'nocache' parameter was forbidden
275    (thanks andreasØkringelstan*se)
276  * Bugfix: disabled functions (set_time_limit, shell_exec, etc)
277    not always correctly detected
278    (thanks ryandemmerØgmail*com, dr*creatorØgmail*com)
279  * Bugfix: phpThumbURL() was broken if __FILE__ and
280    $PHPTHUMB_CONFIG['document_root'] had different slash
281    styles (\ vs /)  (thanks jobbetØskarin*com)
282  * Bugfix: 'wmt' watermark text not properly right- or center-
283    aligned with TTF fonts
284  * Bugfix: force stderr output to stdout in SafeExec
285  * Bugfix: filter-generated debug messages not passed back
286  * Bugfix: /demo/phpThumb.demo.gallery.php was not getting
287    correct DOCUMENT_ROOT value on some servers
288    (thanks latex*dragonØgmail*com)
289  * Bugfix: HTTP source images with no parameters were not
290    being passed through directly (thanks chrisØmegawap*net)
291  * Bugfix: "unknown image type" errors on non-GD-supported
292    remote image sources  (thanks chrisØgorillachicago*com)
293  * Bugfix: remote images not found if server returned 302
294    message with text other than "Found"
295    (thanks cveleØdefault*co*yu, kevinØkevinevans*net)
296  * Bugfix: resetObject() was clobbering debug messages
297    (thanks kevinØkevinevans*net)
298  * Bugfix: CleanUpURLencoding() was broken
299    (thanks kevinØkevinevans*net)
300  * Bugfix: Cache auto-purging was generally broken, especially
301    if the cache contained a directory or filename of "0"
302    (thanks hannoØxcalak*info; webdesignØweisshart*de)
303
304
305
306v1.7.7 - December 25, 2006
307  ¤ Added phpThumb.demo.gallery.php -- basic image gallery demo
308  ¤ Added option for image watermark for anti-hotlinking. See
309    phpThumb.config.php "nooffsitelink_watermark_src"
310    (thanks rik_helsenØrad*be)
311  ¤ Added config option "imagemagick_use_thumbnail" to control
312    use of ImageMagick's "-thumbnail" command vs "-resize" (the
313    former discards non-visible metadata, the latter retains it)
314    Most times you want the smallest filesize so keep the default
315    setting (imagemagick_use_thumbnail==true)
316    (thanks niklasØmysticalgarden*se)
317  * Bugfix [#1620056]: EnsureDirectoryExists() failed to create
318    some directory structures  (thanks jeromyØlocallinux*com)
319  * Bugfix [#1620056]: CleanUpCacheDirectory() would not purge
320    files from subdirectories if (cache_directory_depth > 0)
321    (thanks kingsquareØusers*sourceforge*net)
322  * Bugfix: nooffsitelink_* broken when running on non-standard
323    HTTP port  (thanks marianbucur17Øyahoo*com)
324
325
326v1.7.6 - December 09, 2006
327  ¤ Added "sia" (Save Image As) parameter to provide default
328    filename when saving generated thumbnails
329    (thanks web_mkØhotmail*com)
330  ¤ Changed "lvl" filter parameters, and added option to choose
331    between four different methods (two internal, two from
332    ImageMagick). Added configurable threshold parameter.
333    (thanks publicØwoktiny*com for code for new internal method)
334  ¤ "wb" (White Balance) filter now processed by ImageMagick
335  * Changed GD max source pixels to 1/6 (from 1/5) available
336    memory, and changed SourceImageIsTooLarge() to account for
337    already-used memory (if known)
338  * More graceful error handling in object mode when source
339    larger than PHP memory limit and ImageMagick unavailable
340    (thanks djasonØdjason*com)
341  * Added ImageMagickFormatsList()
342  * CleanUpCacheDirectory() now also purges zero-byte orphan
343    files left over from aborted thumbnailings
344  * Bugfix [#1606069]: Changed default urlencoded space
345    character from "+" to "%20"
346  * Bugfix [#1608664]: "Unsupported operand types" in "wmi"
347    filter (thanks haydurØhaydur*com; squidliberty)
348  * Bugfix: debug mode now supports text output in all modes
349  * Bugfix: ImageMagick creation attempted before GD creation
350  * Bugfix: no longer fails silently if GD creation runs out of
351    memory
352  * Bugfix: poor alpha rendering from PNG to GIF with ImageMagick
353  * Bugfix: "wb" filter had no effect when "lvl" filter applied
354    in ImageMagick instead of GD
355
356
357v1.7.5 - October 03, 2006
358  ¤ Deprecated parameters "err", "file", "goto"
359  ¤ Added broad cache directory feature (see phpThumb.config.php
360    "cache_directory_depth") to spread cache files across many
361    directories for improved performance and ability to store
362    very large numbers (30000+) of cached files
363    (thanks despoixØopenxtrem*com)
364  ¤ phpThumb now follows HTTP redirects (status=302) to new
365    HTTP image URLs (configurable: config_http_follow_redirect)
366    (thanks shannahØsfu*ca)
367  ¤ Added "rot" (ROTate) filter which is similar to "ra" parameter
368    but now allows rotation of output of other filters (for
369    example, rotate image after fltr[]=mask is applied)
370    (thanks markØwoodjoint*ca)
371  ¤ Added WBMP output support (built-in GD or via ImageMagick)
372    (code was already mostly present, just was not allowed format)
373  ¤ [#1567113] "wmi" filter now accepts both x and y margins
374    and can be in pixels or percent of thumbnail dimensions
375    (thanks squidlibertyØusers*sourceforge*net)
376  * "hist" filter now accepts both X and Y margins
377  * Added config variables: config_http_fopen_timeout = 10;
378    config_http_follow_redirect = true
379  * Changed MIME type for WBMP to image/vnd.wap.wbmp
380  * Bugfix: Check for GD format support before attempting output
381  * Bugfix: Opening HTTP source images with URL query parameters
382    was broken (eg: http://host/show?id=123)
383    (thanks ivo*beckersØinfopractica*nl)
384
385
386v1.7.4 - August 17, 2006
387  ¤ Improved version of /demo/phpThumb.demo.showpic.php uses
388    phpThumb.php so any filters can be applied, as well as
389    resized image popups.
390    New file: /demo/javascript_api.js
391    Uses Javascript API by James Austin <jamesdozØhotmail*com>
392    (http://aspandjavascript.co.uk/javascript/javascript_api/)
393  ¤ Added "sfn" (Source Frame Number) parameter to specify
394    source frame in multi-frame/multi-page source formats, such
395    as GIF, TIFF, PDF, etc  (thanks despoixØopenxtrem*com)
396  ¤ Added "dpi" (Dots Per Inch) parameter to specify
397    rasterising resolution for vector source formats (PDF, WMF)
398    (requires ImageMagick)  (thanks despoixØopenxtrem*com)
399  * Added /demo/phpThumb.demo.object.simple.php
400  * Added debug points inside GenerateThumbnail
401  * Explicit error message for unsupported PDF source images
402  * Bugfix: SafeURLread broken with GETstring parameters in
403    fsockopen mode
404  * Bugfix: [#1540523] CleanUpCacheDirectory() does not delete
405    files as expected  (thanks patricksleeØusers*sourceforge*net)
406  * Bugfix: added useful error message when no source specified
407    in object mode  (thanks infoØdoepud*co*uk)
408  * Bugfix: timeout value ignored in URLreadFsock()
409  * Bugfix: timeout missing in SafeURLread CURL part
410  * Bugfix: ImageMagick now checked with --version (not -version)
411  * Bugfix: better ImageMagick (numeric) version number matching
412  * Bugfix: noGD errors showing up when GD imagecreate functions
413    fail and ImageMagick not available
414    (thanks caseyyØgmail*com)
415  * Bugfix: "-thumbnail" parameter not present in older versions
416    of ImageMagick, now using -resize if -thumbnail unavailable
417    (thanks atombomb96Øbtopenworld*com)
418  * Bugfix: "-resize" parameter requires explicit dimensions
419    ("100x100" instead of "100x") in older ImageMagick versions
420    (thanks atombomb96Øbtopenworld*com)
421  * Bugfix: phpThumb crashed with no output if ImageMagick failed
422    to resize but output image larger than max_source_pixels
423    (thanks atombomb96Øbtopenworld*com)
424  * Bugfix: phpThumb might die with no output on some large source
425    images when ImageMagick unavailable.
426    (thanks atombomb96Øbtopenworld*com)
427
428
429v1.7.3 - July 11, 2006
430  * Now returns useful message for HTTP sources if 404-file-
431    not-found (or similar) errors occur
432  * Added new fsockopen() section in SafeURLread()
433  * Removed PNG alpha warning for IE 7 (alpha PNGs now work)
434  * Bugfix: ImageMagick failing version check and dumping text
435    output  (thanks infoØdevsystem*net)
436  * Bugfix: curl_exec failing with text output
437    (thanks infoØdevsystem*net)
438  * Bugfix: workaround for PHP Bug #36102 (fopen(http) crash
439    in PHP v4.4.2
440  * Bugfix: "Unknown image type identified by..." problem when
441    opening http:// source images
442    (thanks webmasterØdanceage*com)
443
444
445v1.7.2 - June 22, 2006
446  ¤ [#1256693] Added $this->exif_raw_data which is returned
447    data from exif_read_data() on source image.
448    Requires PHP v4.2.0+  (thanks tebiØusers*sourceforge*net)
449  ¤ Added $this->outputImageData and RenderOutput() to allow
450    easy outputting of thumbnail data to a database or such.
451    Call RenderOutput() instead of RenderToFile() and then
452    access raw data in $this->outputImageData
453    (thanks r*cremerØswitch*nl)
454  ¤ Added 'crop' filter, which is applied after resizing (as
455    opposed to sx,sy,sw,sh which are before resizing)
456    (thanks scottØscottjehl*com)
457  * Enable creating new images with PATH_INFO style call
458    (thanks edenØinstyleit*com*au)
459  * Added warning message to encourage users not to use
460    full HTTP paths for "src" parameter
461  * Added fallback 'preg_quote' to phpthumb.functions.php in
462    case your PHP installation does not have preg_* functions
463    (thanks mortenØemeskay*dk)
464  * Added fallback 'imagesavealpha' if GD < v2.0.1
465    (thanks oliver*heegerØweb*de)
466  * Added fallback 'imagealphablending' if GD < v2.0.1
467    (thanks oliver*heegerØweb*de)
468  * Added 'nocache' parameter that suppresses writing to cache
469    file, but only if high_security_enabled is set
470    (thanks federicoØdonelleschi*com)
471  * Attempt to detect supported ImageMagick features
472    (thanks simonØjapancentre*com)
473  * Added temp dir detection to phpThumb.demo.check.php
474  * Added ImageMagick dir to phpThumb.demo.check.php
475  * Added ImageMagick features to phpThumb.demo.check.php
476  * Default (config_allow_src_above_docroot = true) when PHP
477    running in "cli" mode  (thanks flobeeØgmail*com)
478  * Bugfix: [#1470791] 'iar' not working properly with
479    ImageMagick  (thanks w1xØusers*sourceforge*net)
480  * Bugfix: [#1498564] illegal characters in cache filenames
481    (thanks carl-evertØusers*sourceforge*net)
482  * Bugfix: 'sx','sy','sw','sh','zc' cache parameters broken
483    (thanks federicoØdonelleschi*com)
484  * Bugfix: 'config_max_source_pixels' incorrectly handled
485    (thanks oliver*heegerØweb*de)
486  * Bugfix: 'aoe' not working properly
487    (thanks w1xØusers*sourceforge*net)
488  * Bugfix: setParameter() was broken for arrays
489  * Bugfix: setSourceFilename() wasn't setting 'src'
490  * Bugfix: suppress stat()-related file permission
491    notices  (thanks lanceØmainecoastdesign*com)
492  * Bugfix: image format now initialized during ErrorImage()
493  * Bugfix: domain matching now case-insensitive
494  * Bugfix: some versions of ImageMagick not detected
495    (thanks arvidØfys*ku*dk)
496  * Bugfix: sometimes no image returned in safe_mode
497    (thanks bkainersØgmail*com)
498  * Bugfix: 'far' not always handled correctly
499    (thanks matthew*newtonØrealworldweb*com)
500  * Bugfix: PATH_INFO method not working if no filters specified
501    (thanks jjimenezØpracticaldata*com)
502  * Bugfix: first (internal) call to ImageMagickVersion() failed
503    under Windows
504  * Bugfix: Images source-cropped AND resized with ImageMagick were
505    wrong size (cropped size, not resized size)
506    (thanks joao*saleiroØwebfuel*pt)
507  * Bugfix: stat() warnings in CleanUpCacheDirectory()
508    (thanks christianØhss-haage*de)
509  * Bugfix: $PHPTHUMB_DEFAULTS not working when no other processing
510    parameters specified  (thanks tbittnersØcox*net)
511
512
513v1.7.1 - March 16, 2006
514  * /demo/phpThumb.demo.check.php now checks:
515    - server software
516    - local and master config values (with ini_get and
517      get_cfg_var respectively)  (thanks nEUTRonØgmx*tm)
518    - existance of assorted PHP functions and explains their
519      importance
520  * Bugfix: config_error_die_on_error now defaults to FALSE to
521    prevent object-mode errors dying in an error image
522    (thanks moshØtobt*de; riteshgupta1974Øgmail*com)
523  * Bugfix: setParameter() now handles array parameters (such
524    as 'fltr') by appending $value to $parameter
525  * Bugfix: /demo/phpThumb.demo.check.php incorrect CURL value
526    under PHP5  (thanks nEUTRonØgmx*tm)
527  * Bugfix: [#1439110] Limit fread() calls to 8kB
528    (see http://bugs.php.net/bug.php?id=35859)
529    (thanks andig2Øusers*sourceforge*net)
530  * Bugfix: Prevent RenderToFilename() from trying to render
531    to URLs  (thanks Tim*MasseyØitrm*co*uk)
532  * Bugfix: [#1438657] missing path in phpThumbURL()
533    (thanks terracesØusers*sourceforge*net)
534  * Bugfix: zoomcrop was broken for non-square output
535    (thanks alisonØsemidivine*com, federicoØdonelleschi*com)
536  * Bugfix: suppress error messages when stat access to temp
537    dir is disabled  (thanks rfineØvnuinc*com)
538  * Bugfix: ImageMagick processing was broken for source
539    images of types not supported by GetImageSize
540    (thanks rfineØvnuinc*com)
541
542v1.7.0 - February 15, 2006
543  ¤ ImageMagick output is used directly far more frequently
544    for much improved speed and minor quality improvement.
545  ¤ ImageMagick now processes most of the image filters if
546    possible (will fall back to GD methods if unavailable)
547  ¤ GD support is now optional if ImageMagick is installed.
548    Known limitations include:
549    - no support for HTTP source images
550    - ICO output is buggy (in some ImageMagick versions)
551    - most &fltr[] filters don't work at all
552    - 'ar', 'ra', 'far' don't work
553  ¤ Added output support for ICO (icon) format (&f=ico).
554    Currently only supports single-image icons, but multi-
555    resolution support may be added in future versions
556    New file: phpthumb.ico.php
557  ¤ Added output support for BMP (bitmap) format (&f=bmp).
558    Currently only supports 24-bit RGB format (for simplicity)
559  ¤ Added new configuration & compatability checker
560    New file: demo/phpThumb.demo.check.php
561  * ImageMagick-generated thumbnails now have extra hidden
562    contents (EXIF data, etc) stripped (by using -thumbnail
563    instead of -resize) resulting in smaller filesizes
564  * Added background fill color, opacity and extent options to
565    'wmt' filter  (thanks craigØpc-fanatics*com)
566  * Added metacharacter (^*) support for 'wmt', currently:
567    source filesize in bytes (^Fb), kB (^Fk), MB (^Fm),
568    source image width (^X), source image height (^Y),
569    thumbnail width (^x), thumbnail height (^y) and caret (^^)
570    (Feature Request #1357815)
571    (thanks ticklemeozmoØusers*sourceforge*net)
572  * Moved ImageDestroy call from OutputThumbnail to end of
573    phpThumb.php to allow multiple calls to OutputThumbnail
574  * Added config_http_user_agent for site with browsersniffers
575    (thanks redrobØgmail*com)
576  * Added $PHPTHUMB_CONFIG['disable_pathinfo_parsing'] (default
577    false) which disables parsing $_SERVER[PATH_INFO] for
578    parameters. If you want to parse PATH_INFO, set to false
579  * Added $PHPTHUMB_CONFIG['disable_imagecopyresampled'] (default
580    false) which replaces ImageCopyResampled with
581    ImageCopyResampleBicubic for buggy PHP-GD versions
582    (thanks g*pelagattiØnetface*it)
583  * Added $PHPTHUMB_CONFIG['cache_prefix'] to allow sharing of
584    cache files across virtual servers (Feature Request #1395332)
585    (thanks doggyfrØusers*sourceforge*net)
586  * Added $PHPTHUMB_CONFIG['disable_onlycreateable_passthru'] with
587    default=true (increased speed) to allow direct passthru of
588    images that don't have GD support. (Feature Request #1396446)
589    (thanks zedboyØusers*sourceforge*net)
590  * Removed $PHPTHUMB_CONFIG['cache_differentiate_offsite'] because
591    it is now automatically tied in with nooffsitelink_enabled
592    (thanks doggysworldØlibertysurf*fr)
593  * Removed phpThumb.demo.cacheconvert2.php
594  * Debug messages are now passed back from filters
595  * $PHPTHUMB_CONFIG['cache_source_filemtime_ignore_remote'] now
596    defaults to true for much-improved cached performance
597    (thanks redrobØgmail*com)
598  * $PHPTHUMB_CONFIG['cache_differentiate_offsite'] now defaults
599    to false
600  * Added $PHPTHUMB_DEFAULTS['ar']='x' to phpThumb.config.php.default
601  * Added ImageDestroy($this->gdimg_source) to GenerateThumbnail()
602    to save memory before applying image filters
603  * gd_info() no longer member of phpthumb_functions
604  * cache files now default to using SERVER_NAME without 'www.'
605  * phpUnsharpMask::applyUnsharpMask() should be faster under PHP5 by
606    using ImageFilter(IMG_FILTER_GAUSSIAN_BLUR) when radius==1
607  * Added alternate CURL method for HTTP source images if
608    allow_url_fopen is disabled  (thanks webweberØmotiondraw*com)
609  * Replaced $this->osslash with DIRECTORY_SEPARATOR constant
610  * Bugfix: [#1398327] 'new' got broken (1x1 images)
611  * Bugfix: [#1412552] HTTP source images with special characters were
612      not getting urlencoded
613  * Bugfix: ImageSaveAlpha errors on GD v2.0.0
614  * Bugfix: phpThumbDebug now entirely disabled if high_security=true
615  * Bugfix: source images with transparency lost transparency when
616    rotated  (thanks roalklØyahoo*com)
617  * Bugfix: square source images were not resized when only (w|h)(p|l)
618    parameters passed
619  * Bugfix: source images are passed through unmodified in more cases
620  * Bugfix: ImageMagick not used on systems where it exists outside
621    defined open_basedir
622  * Bugfix: ImageMagickVersion() now returns correct versionstring
623  * Bugfix: ImageMagick warnings no longer cause ImageMagick to fail
624  * Bugfix: ErrorImage no longer fatal to phpThumbDebug
625  * Bugfix: "Array to string conversion" in foreach($a as $v) loops
626    (thanks zeeshanØtargetedmedia*co*uk)
627  * Bugfix: safe mode warnings in ImageCreateFromStringReplacement
628    (thanks adminØalex-home*net)
629  * Bugfix: nooffsitelink broken if !nooffsitelink_require_refer
630    (thanks depronØgmx*net)
631  * Bugfix: phpThumb failed when magic_quotes_runtime=true
632    (thanks stansawyerØyahoo*com)
633  * Bugfix: several issues with HTTP image sources
634    (thanks redrobØgmail*com)
635  * Bugfix: phpThumb_tempnam() would return incomplete temp filenames
636    under Windows, which may result in orphaned zero-byte temp files
637    in C:\ if multiple drives exist
638
639v1.6.2 - November 24, 2005
640  ¤ Animated GIF output is now possible if ImageMagick is
641    available and no filters (other than resize) are applied
642    (thanks brandenbassØgmail*com for idea)
643  * Added $PHPTHUMB_CONFIG['cache_force_passthru'] to work
644    around cached-image-only-works-second-time issue
645    (thanks yakoØ11y11*com)
646  * Bugfix: black borders on some image edges
647    (thanks atelierØdelirius*ch && chuckØcatalyststudio*com)
648  * Bugfix: uncaught PHP warning in RenderToFile DebugMessage
649  * Bugfix: allow phpThumbDebug in noGD PHP installations
650  * Bugfix: 'hash' warning in high_security mode
651    (thanks bernhardØwtf*at)
652  * Bugfix: non-TTF rotated text watermarks now work (unrotated)
653    with no warnings if ImageRotate is unavailable
654    (thanks aparviaiØusers*sourceforge*net)
655
656v1.6.1 - August 26, 2005
657  ¤ Filters now use GD functions where available (using
658    ImageFilter, only available in PHP v5.0.0+ with bundled
659    version of GD). Enabled for: colorize, negative,
660    grayscale, brightness, contrast, gaussian blur, selective
661    blur, mean removal  (thanks donlaurØmac*com)
662  ¤ Added config_prefer_imagemagick (defaults=true)
663  ¤ Added phpthumb_filters::Grayscale()        'gray'
664  ¤ Added phpthumb_filters::ReduceColorDepth() 'rcd'
665  ¤ Added phpthumb_filters::Brightness()       'brit'
666  ¤ Added phpthumb_filters::Contrast()         'cont'
667  ¤ Added phpthumb_filters::Saturation()       'sat'
668  ¤ Added phpthumb_filters::EdgeDetect()    'edge' [PHP5 only]
669  ¤ Added phpthumb_filters::BlurGaussian()  'gblr' [PHP5 only]
670  ¤ Added phpthumb_filters::BlurSelective() 'gblr' [PHP5 only]
671  ¤ Added phpthumb_filters::MeanRemoval()   'mean' [PHP5 only]
672  ¤ Added phpthumb_filters::Smooth()        'smth' [PHP5 only]
673  * New timing debug info in phpThumbDebug
674  * Added config_cache_differentiate_offsite
675  * config_die_on_error now defaults to false
676  * ResolveSource works better
677  * cache filenames with 'fltr' parameters have changed
678  * Filters now skip processing if amount=0 or similar
679  * [#1263051] 'far' now accepts L,R,T,B,C as values giving
680    alignment of left/right/top/bottom/center respectively.
681    Old value of '1' defaults to centered
682    (thanks webgrappaØusers*sourceforge*net)
683  * Bugfix: RenderToFile() now fails properly when output format
684    is unknown
685  * Bugfix: PNG transparency wasn't working with 'far'
686  * Bugfix: source images with EXIF thumbnails that differ in
687    aspect ratio no longer use EXIF thumbnails as source unless
688    no other options exist
689  * Bugfix: setting 'src' with setParameter now invokes
690    setSourceFilename to properly set $this->sourceFilename
691    (thanks Gazou)
692  * Bugfix: 'zc' had poor quality when used with ImageMagick
693  * Bugfix: 'aoe' parameter broken when not using ImageMagick
694    (thanks frankieali4Øhotmail*com)
695  * Bugfix: fixed issue with symbolic links
696    (thanks hornet136Øgmail*com)
697  * Bugfix: config_max_source_pixels now defaults to same
698    calculation as used in phpThumb.config.php
699    (thanks vukshaØhotmail*com)
700  * Bugfix: Offsite cached thumbnails no longer use unique
701    referer (now either nothing or "_offsite")
702    (thanks swaayeØyahoo*com)
703  * Bugfix: "Unknown image type identified by “<?ph”" errors
704    in some installations  (thanks frankieali4Øhotmail*com)
705
706v1.6.0 - July 18, 2005
707  ¤ Included new file phpThumb.demo.random.php to select a
708    random image from a specified folder, optionally only
709    landscape and/or portrait and/or square images, and to
710    display it to phpThumb.php
711    (thanks mikeØgdaymate*nl)
712  ¤ Added /docs/phpthumb.faq.txt
713  ¤ Added /demo/readme.demos.txt
714  ¤ Added 'wp', 'hp', 'wl', 'hl', 'ws', 'hs' parameters for
715    width and height of portrait, landscape and square
716    images. This allows you to display any image aspect
717    ratio at the size you want without knowing ahead of time
718    whether the image is wide or tall.
719    (thanks mikeØgdaymate*nl)
720  ¤ phpThumb.php can now also be called by passing parameters
721    in $_SERVER['PATH_INFO']. Please see phpthumb.readme.txt
722    (thanks javierØguegue*net)
723  ¤ MySQL data pulling configuration moved from phpThumb.php
724    to phpThumb.config.php
725  * "file" and "goto" parameters are now disabled by
726    default (configurable in phpThumb.config.php but not
727    recommended)
728  * Cached files are now used from first instance, avoiding
729    call to OutputThumbnail and preventing browser-side
730    cache failure
731  * Added config_allow_src_above_docroot (default=false) to
732    prevent browsing filesystem outside document_root
733    (thanks davidØint0x80*com)
734  * Added config_allow_src_above_phpthumb (default=true) to
735    prevent access to files except in subdirectories of
736    phpThumb installation  (thanks davidØint0x80*com)
737  * Added setParameter() and getParameter() functions
738    (thanks werner*kraussØhallstatt*net)
739  * SafeBackTick() renamed to SafeExec() and all execution
740    functions are tried (exec, shell_exec, system, passthru)
741    are tried in case one or more are disabled
742    (thanks bkainersØgmail*com)
743  * config_output_allow_enlarging has been removed from
744    phpthumb.class.php, and 'output_allow_enlarging' has
745    been removed from phpThumb.config.php
746  * New default detection method for
747    $PHPTHUMB_CONFIG['document_root']
748  * Bugfix: inconsitant handling of boolean parameters
749    passed "0" (isset vs !empty())  (thanks manniØzapto*de)
750  * Bugfix: text watermarks now support multiple lines
751    (thanks hanno*vandenbergØhccnet*nl)
752  * Bugfix: suppress error message in
753    ImageCreateFromStringReplacement()
754    (thanks srimandadapuØyahoo*com)
755  * Bugfix: 'aoe' was ignored in object mode
756    (thanks tonyØnylink*com)
757  * Bugfix: ResolveFilenameToAbsolute() failed on non-
758    existant filenames (file to be written, for example)
759  * Bugfix: 'aoe' parameter was ignored in cache filename
760    (thanks tonyØnylink*com)
761  * Bugfix: non-TTF watermark text had inverted opacity
762    scale. All 'wmt' is now 100=opaque, 0=transparent
763    (thanks mailØmmjaeger*com)
764  * Bugfix: cache file failed if document_root had
765    trailing slash.  (thanks lovingloboØgmail*com)
766  * Bugfix: [#1219422] Cache filename structure modified to
767    avoid excessively long filenames (cache filenames are
768    now limited to 142 characters + length of
769    $_SERVER['SERVER_NAME'])
770    (thanks trungieØusers*sourceforge*net)
771  * Bugfix: [#1211729] phpThumb.php fails to locate
772    phpThumb.config.php if the two files are in the same
773    directory but phpThumb.php is run through a sym link.
774    (thanks allanbushØusers*sourceforge*net)
775
776v1.5.4 - May 27, 2005
777  * Security issue with passthrough addressed
778    (thanks davidØint0x80*com)
779  * 'wmt' now reads TTF fonts from the config font
780    directory, or from anywhere if a path is specified in
781    the font filename
782    (thanks mailØmmjaeger*com)
783  * Changed default error_die_on_source_failure to true in
784    phpThumb.config.php
785  * Bugfix: Firefox (possibly other browsers) did not like
786    the new (faster) cache retrieval method with Location
787    header redirection if the cached filename does not have
788    a recognized filename extension (.jpeg, .png, .gif).
789    Cached images have therefore been renamed from *_jpeg to
790    *.jpeg and the _qXX parameter has been removed for PNG
791    and GIF output. Please use the included cache renamer:
792    /demo/phpThumb.demo.cacheconvert2.php
793    (thanks mailØmmjaeger*com)
794  * Bugfix: Changed "Content-type" to "Content-Type" in all
795    header calls
796  * Bugfix: 'wmt' text opacity was broken
797    (thanks mstuhuØweb*de)
798  * Bugfix: variable name typo in phpThumb.demo.object.php
799    (thanks mbØmarko-bischof*de)
800  * Bugfix: no GD support for source image format now
801    reported as such for remote images
802    (thanks andgu842Østudent*liu*se)
803  * Bugfix: very narrow images no longer produce Invalid
804    Image Dimensions error  (thanks mailØmmjaeger*com)
805
806v1.5.3 - May 4, 2005
807  ¤ Added new filters:
808    - 'wb' (White Balance) [ex: &fltr[]=wb|<c>]
809      where <c> is the target hex color to white balance
810      on, this color is what "should be" white, or light
811      gray. The filter attempts to maintain brightness so
812      any gray color can theoretically be used. If <c> is
813      omitted the filter guesses based on brightest pixels
814      in each of RGB
815  ¤ Cached files are used by a Location header instead of
816    being passed through phpThumb.php using readfile
817    (thanks newtnØthrillnerds*com)
818  * Added 'cache_source_filemtime_ignore_local' and
819    'cache_source_filemtime_ignore_remote' configurations
820    to ignore source modification and/or removal
821    (thanks raynerapeØgmail*com)
822  * Added 'md5s' parameter, which is the MD5 hash of the
823    source image -- if this parameter is passed with the
824    hash of the source image then the source image is not
825    checked for existance or modification and the cached
826    file is used (if available). If 'md5s' is passed an
827    empty string then phpThumb.php dies and outputs the
828    correct MD5 hash value.  This parameter is the single-
829    file equivalent of 'cache_source_filemtime_ignore_*'
830    configuration paramters  (thanks raynerapeØgmail*com)
831  * Added /demo/phpThumb.demo.object.php
832  * Unused parameter 'bgt' removed
833  * Added empty /cache/source/ directory to distribution
834  * Added /demo/ and /docs/ and /fonts/ directories
835  * Set default config_use_exif_thumbnail_for_speed = false
836  * Bugfix: Wrapped output buffering around all
837    include_once calls to prevent headers getting sent
838    accidentally
839  * Bugfix: md5_file and imagecolorallocatealpha calls
840    were undefined under PHP v4.1.x  (thanks tomØemile*com)
841  * Bugfix: default 'f' parameter ('jpeg') overrode
842    config_output_format in object mode
843    (thanks mailØmmjaeger*com)
844  * Bugfix: suppressed error message for IIS shell_exec
845    errors  (thanks tomØemile*com)
846  * Bugfix: Added PHP version check for stream_set_timeout
847    for HTTP sources  (thanks raynerapeØgmail*com)
848  * Bugfix: overlay margins of 0.5-1.0 cause invalid image
849    dimensions error  (thanks mailØmmjaeger*com)
850  * Bugfix: underlay margins were not working
851    (thanks mailØmmjaeger*com)
852  * Bugfix: [#1187735] EXIF thumbnails were incorrectly
853    output to the browser directly if requested thumbnail
854    exactly matched EXIF dimensions
855    (thanks rebootØusers*sourceforge*net)
856
857v1.5.2 - April 20, 2005
858  ¤ phpThumb.config.php is renamed to
859    phpThumb.config.php.default to prevent accidental
860    overwriting. Please migrate your old settings to the new
861    file, delete your old config and rename the default to
862    phpThumb.config.php
863  ¤ Added new filters:
864    - 'blur' (Blur) [ex: &fltr[]=blur|<radius>]
865      where (0 < <radius> < 25) (default = 1)
866      (thanks thoensiØnetcom*no for code)
867    - 'hist' (Histogram)
868      [ex: &fltr[]=hist|<b>|<c>|<w>|<h>|<a>|<o>|<m>]
869      Where <b> is the color band(s) to display, from back
870      to front (one or more of "rgba*" for Red Green Blue
871      Alpha and Grayscale respectively);
872      <c> is a semicolon-seperated list of hex colors to
873      use for each graph band (defaults to FF0000, 00FF00,
874      0000FF, 999999, FFFFFF respectively);
875      <w> and <h> are the width and height of the overlaid
876      histogram in pixels, or if <= 1 then percentage of
877      source image width/height;
878      <a> is the alignment (same as for "wmi" and "wmt");
879      <o> is opacity from 0 to 100;
880      <m> is the edge (and inter-tile) margin in percent
881    - 'over' (OVERlay/underlay image) overlays an image on
882      the thumbnail, or overlays the thumbnail on another
883      image (to create a picture frame for example)
884      [ex: &fltr[]=over|<i>|<u>|<m>|<o>]
885      where <i> is the image filename; <u> is "0" (default)
886      for overlay the image on top of the thumbnail or "1"
887      for overlay the thumbnail on top of the image; <m> is
888      the margin - can be absolute pixels, or if < 1 is a
889      percentage of the thumbnail size [must be < 0.5]
890      (default is 0 for overlay and 10% for underlay);
891      <o> is opacity (0 = transparent, 100 = opaque)
892      (thanks raynerapeØgmail*com, shabazz3Ømsu*edu)
893    - 'gray' (GRAYscale) [ex: &fltr[]=gray]
894      is an alias to 100% desaturation
895  * New configuration 'cache_source_directory' allows the
896    unprocessed source image to be cached when source is
897    HTTP or from a database  (thanks raynerapeØgmail*com)
898  * Added 'cache' subdirectory to phpThumb distribution
899    since this is the default location for the cache
900    folder.
901  * Default value for config_error_die_on_source_failure
902    changed to true  (thanks shabazz3Ømsu*edu)
903  * Added checks to make sure $this->gdimg_output is a
904    resource before allowing calls to RenderToFile or
905    OutputThumbnail
906  * Better error messages when phpThumb.config.php missing
907  * Bugfix: watermark overlay margins were wrong
908  * Bugfix: 'lvl' filter no longer processes if not needed
909  * Bugfix: off-server thumbnail error message was wrong
910  * Bugfix: several PHP safe mode fixes
911    (thanks virginiaØalertbutnotalarmed*com)
912  * Bugfix: cache filenames broken for filter parameters
913    with paths  (thanks srcericØusers.sourceforge.net)
914
915v1.5.1 - April 06, 2005
916  * Added some security upgrades:
917    - 'config_*' parameters cannot be passed by GETstring
918    - 'config_nooffsitelink_require_refer' is a new option
919      (disabled by default) that only allows calls to
920      phpThumb() from a refering domain listed in
921      'config_nooffsitelink_valid_domains'
922    - disallowed paramters now generate an error image if
923      present in the GETstring
924    - 'high_security_enabled' if set to true enabled new
925      mode of verification, and requires a small function
926      to generate a hash for calls to phpThumb:
927      echo '<img src="'.phpThumbURL('src=pic.jpg&w=50').'">';
928      This function is supplied at the bottom of
929      phpThumb.config.php  (thanks paulØstonie*co*uk)
930  ¤ Added new parameter "new" (phpThumb.php only) which can
931    create a new image without using "src" parameter. Set
932    "&new=<b>|<o>" where <b> is the background hex color,
933    <o> is (optional) opacity (0=transparent, 100=opaque).
934    (thanks mailØmmjaeger*com)
935  ¤ Added new filters:
936    - 'sep' (Sepia) [ex: &fltr[]=sep|<value>|<color>]
937      where <value> is a number between 0 and 100 for the
938      amount of colorization (default=50), and <color> is
939      the hex color to colorize to (default=A28065).
940      (thanks mailØmmjaeger*com)
941    - 'lvl' (Levels) [ex: &fltr[]=lvl|<channel>|<min>|<max>
942      where <channel> can be one of 'r', 'g', 'b', 'a' (for
943      Red, Green, Blue, Alpha respectively), or '*' for all
944      channels based on average grayscale value (default).
945      <min> and <max> are the clip points for the levels
946      (range = 0-255) and are set to clip 0.1% of each end
947      by default. Use -1 for min and/or max to invoke auto-
948      detect mode. Using default parameters (&fltr[]=lvl)
949      is similar to Auto Contrast in Adobe Photoshop.
950  * Bugfix: Image MIME header was incorrect for cached
951    images.
952  * Bugfix: Cache was broken for images pulled from a
953    database in phpThumb.php
954    (thanks dragutin*cvetkovicØdragontech-ltd*com)
955  * Bugfix: Hotlink/Offsite prevention was broken when
956    image was already cached.
957  * Bugfix: ImageMagick path was incorrect in some cases
958    (thanks joshgØtwcny*rr*com)
959  * Bugfix: ProportionalResize() in phpthumb.functions.php
960    had a broken check for default values
961    (thanks Bert*ClaeysØarinso*com)
962  * Bugfix: transparency now preserved for GIF & PNG input
963    (thanks tristanØcyrax*ch)
964  * Bugfix: transparency now supported for GIF output
965    (thanks j_ivanovØabv*bg)
966  * Bugfix: alpha transparency could be lost in ApplyMask()
967    (thanks analyzerxØgmail*com)
968  * Bugfix: errors on 16/32-bit BMPs
969    (thanks mattØhellstrominc*com)
970  * Bugfix: Added datestamp to cached filenames for remote
971    (HTTP) files, and better warning for caching
972    (thanks a*gambinoØabramo*it)
973  * Faster BMP parsing  (thanks sgeppertØmail*utexas*edu)
974  * Added 'error_die_on_source_failure' configuration to
975    allow invalid source images to show an error rather
976    than output unmodified source image.
977    (thanks mindpixelØgmail*com)
978  * Added $phpThumb->fatalerror which will contain the
979    text of the fatal error if 'error_die_on_error' is
980    false.  (thanks mindpixelØgmail*com)
981
982v1.5.0 - February 4, 2005
983  * Added new filter parameter 'fltr' that is an array and
984    can apply multiple effects in sequence. Current filters
985    that can be called are:
986    - 'gam' (Gamma Correction) [ex: &fltr[]=gam|<value>]
987      where <value> can be a number >0 to 10+ (default 1.0)
988    - 'ds' (DeSaturate) [ex: &fltr[]=ds|<value>]
989      where <value> is a number between zero (no change)
990      and 100 (complete desaturation -- grayscale), or it
991      can be a negative number for saturation boost.
992      (thanks mailØmmjaeger*com)
993    - 'clr' (Colorize) [ex: &fltr[]=clr|<value>|<color>]
994      where <value> is a number between 0 and 100 for the
995      amount of colorization, and <color> is the hex color
996      to colorize to.  (thanks mailØmmjaeger*com)
997    - 'neg' (Negative) [ex: &fltr[]=neg]
998      inverts the color
999    - 'th' (ThresHold) [ex: &fltr[]=th|<val>] (range 0-255)
1000      every grayscale pixel brighter than <val> is set to
1001      white, every darker pixel is set to black
1002      (thanks mailØmmjaeger*com)
1003    - 'usm' (UnSharpMask) [ex: &fltr[]=usm|<a>|<r>|<t>]
1004      where <a> is the amount (default = 80), <r> is the
1005      radius (default = 0.5), <t> is the threshold
1006      (default = 3).
1007    - 'wmi' (WaterMarkImage)
1008      [ex: &fltr[]=wmi|<f>|<a>|<o>|<m>] where <f> is the
1009      filename of the image to overlay, <a> is the
1010      alignment (one of BR, BL, TR, TL, C, R, L, T, B, *
1011      where B=bottom, T=top, L=left, R=right, C=centre,
1012      *=tile), <o> is opacity from 0 to 100, <m> is the
1013      edge (and inter-tile) margin in percent
1014    - 'wmt' (WaterMarkText)
1015      [ex: &fltr[]=wmt|<t>|<s>|<a>|<c>|<f>|<o>|<m>|<n>]
1016      where:
1017      <t> is the text to use as a watermark,
1018      <s> is the font size (1-5 for built-in font, or point
1019        size for TrueType fonts),
1020      <a> is the alignment (one of BR, BL, TR, TL, C, R, L,
1021        T, B, * where B=bottom, T=top, L=left, R=right,
1022        C=centre, *=tile),
1023      <c> is the hex color of the text
1024      <f> is the filename of the TTF file (optional, if
1025        omitted a built-in font will be used)
1026      <o> is opacity from 0 to 100,
1027      <m> is the edge (and inter-tile) margin in percent
1028      <n> is the angle
1029      (thanks mailØmmjaeger*com)
1030    - 'flip' [ex: &fltr[]=flip|x   or   &fltr[]=flip|y]
1031      flip image on X or Y axis
1032      (thanks mailØmmjaeger*com)
1033    - 'elip' [ex: &fltr[]=elip]
1034      similar to rounded corners but more extreme
1035      (thanks mailØmmjaeger*com)
1036    - 'mask' [ex: &fltr[]=mask|filename.png]
1037      greyscale values of mask are applied as the alpha
1038      channel to the main image. White is opaque, black
1039      is transparent.
1040    - 'bvl' (BeVeL) [ex: &fltr[]=bvl|<w>|<c1>|<c2>]
1041      where <w> is the bevel width, <c1> is the hex color
1042      for the top and left shading, <c2> is the hex color
1043      for the bottom and right shading
1044      (thanks mailØmmjaeger*com)
1045    - 'fram' (FRAMe) draws a frame, similar to border but
1046      more configurable  (thanks mailØmmjaeger*com)
1047      [ex: &fltr[]=fram|<w1>|<w2>|<c1>|<c2>|<c3>]
1048      where <w1> is the width of the main border, <w2> is
1049      the width of each side of the bevel part, <c1> is the
1050      hex color of the main border, <c2> is the highlight
1051      bevel color, <c3> is the shadow bevel color
1052    - 'drop' (DROP shadow)
1053      [ex: &fltr[]=drop|<d>|<w>|<clr>|<a>]
1054      where <d> is distance from image to shadow, <w> is
1055      width of shadow fade (not yet implemented), <clr> is
1056      the hex color of the shadow, and <a> is the angle of
1057      the shadow (default=225)
1058    - 'ric' (Rounded Image Corners)
1059      [ex: &fltr[]=ric|<x>|<y>]
1060      where <x> is the horizontal corner radius,
1061      <y> is the vertical corner radius
1062  * Split out filter functions into phpthumb.filters.php
1063  * 'usa','usr','ust' parameters have been removed and
1064    replaced with the 'fltr' call (see above)
1065  * 'wmf','wma','wmp','wmm' parameters have been removed
1066    and replaced with the 'fltr' call (see above)
1067  * 'brx','bry','bw' parameters have been removed
1068    and replaced with the 'fltr' call (see above)
1069  * 'bw=0' to force aspect ratio has been replaced by
1070    'far=1' (force aspect ratio)
1071  * Filters that produce transparent sections (such as
1072    Rounded Corners, Ellipse, Mask, Rotate) are now output
1073    as 32-bit/alpha PNG, or flattened with "bg" background
1074    color for JPEG/GIF output  (thanks mailØmmjaeger*com)
1075  * Added 'zc' (Zoom Crop) parameter
1076    (thanks arcookeØgmail*com, mailØmmjaeger*com,
1077    pl16056Ømacnews*de, kezzasmØusers*sourceforge*net, etc)
1078  * AutoRotate now can use EXIF orientation tag ('ar=x')
1079  * Added 'ttf_directory' configuration parameter for
1080    TrueType watermarks  (thanks mailØmmjaeger*com)
1081  * Added "Last-Modified" header to cache portion of
1082    phpThumb.php which should allow better user-side
1083    caching of thumbnails.  (thanks derekØnetsimple*net)
1084  * Added 'cache_disable_warning' configuration which will
1085    cause an error image to be displayed if the cache
1086    directory isn't configured, unless explicitly disabled
1087  * Added 'nooffsitelink_enabled' configuration which
1088    prevents linking to thumbnails on your server from
1089    another domain. Defaults to watermaking linked images
1090    with text warning message.
1091    (thanks anteØabstraktmedia*com)
1092  * Added 'error_image_width' & 'error_image_height'
1093    config variables  (thanks mailØmmjaeger*com)
1094  * Rounded image corners now requires GD v2.0.1 and PHP
1095    v4.3.2. Corners are transparent (for PNG output) and
1096    antialiased.
1097  * Rotate by arbitary angle ('ra') now has a transparent
1098    background for PNG output
1099  * Cached filenames now have an additional component for
1100    applied filters
1101  * Cached filenames now have an additional component for
1102    HTTP referer, but only if the refering domain does not
1103    match the domain of the server (designed to prevent
1104    imaged linked from offsite with error message being
1105    cached the same as the local cached version)
1106  * Added setSourceImageResource() to allow use of an
1107    existing GD image resource for thumbnailing
1108    (thanks danØgonmad*co*uk)
1109  * Now including phpThumb.demo.demo1.php (main demo page)
1110    and phpThumb.demo.demo2.php (configurable demo page)
1111    in the phpThumb() distribution
1112    (thanks mailØmmjaeger*com)
1113  * Added many more debugging/tracing message points
1114  * Added set_time_limit(30) to phpThumb.php
1115  * Bugfix: ImageMagick not used if `which convert` points
1116    to a link and not a file  (thanks bkainersØgmail*com)
1117  * Bugfix: 'bgt' parameter was sometimes misspelled 'bct'
1118  * Bugfix: 'wmm' couldn't be set to zero
1119  * Bugfix: 'wmm' parameter was only applied to top/left of
1120    image
1121  * Bugfix: auto-detection of document_root failed on
1122    Windows  (thanks xbartvØhotmail*com)
1123  * Bugfix: phpThumbDebug could be bypassed if EXIF
1124    thumbnail present  (thanks olgradinØcheckfree*com)
1125  * Bugfix: cache file wasn't being written if EXIF data
1126    was used directly  (thanks olgradinØcheckfree*com)
1127  * Bugfix: phpThumb.demo.showpic.php was broken by popup
1128    blockers for images larger than the screen.
1129    (thanks mailØmmjaeger*com)
1130
1131v1.4.11 - October 11, 2004
1132  * Changed sx/sy/sw/sh parameters to allow decimal values
1133    (>0 but <1) to represent percent of source image
1134    (thanks mordorØdefault*co*yu)
1135  * Added config_error_silent_die_on_error for no-output
1136    die on fatal errors (thanks johannesØformformat*se)
1137  * Added auto-detection of probable 'document_root' if
1138    that key is not available in $_SERVER
1139  * Bugfix: Check `which convert` failing with error
1140    message (thanks chadØchadshome*com)
1141  * Bugfix: Image cropping to invalid areas outside source
1142    image caused text output (thanks mordorØdefault*co*yu)
1143
1144v1.4.10 - August 22, 2004
1145  * Bugfix: cached files not written in most cases
1146    (thanks kizerØcourtkizer*com, snuffØinbox*ru)
1147  * Bugfix: ApacheLookupURIarray() crashes in CGI mode
1148    (thanks hanskrentelØyahoo*de)
1149  * Bugfix: phpthumb_bmpfile2gd() was broken
1150    (thanks iØmindlace*net)
1151
1152v1.4.9 - August 9, 2004
1153  * Bugfix: changed destination filename in RenderToFile()
1154    (thanks alextkØwalla*com)
1155  * Bugfix: problems with HTTP image source when called as
1156    an object (thanks alextkØwalla*com)
1157
1158v1.4.8 - August 4, 2004
1159  * $this->error has changed to $this->errors and is now
1160    an array of strings (instead of a single string)
1161  * A lot more error conditions (invalid cache directory,
1162    etc) are now reported in $this->errors
1163    (thanks aidan*slingsbyØlineone*net)
1164  * Removed all define(CONSTANT) in the phpThumb()
1165    constructor - you can now access:
1166    - PHPTHUMB_VERSION   == $this->phpthumb_version;
1167    - PHPTHUMB_OSSLASH   == $this->osslash;
1168    - PHPTHUMB_ISWINDOWS == $this->iswindows;
1169  * Bugfix: Error message from apache_lookup_uri() failing
1170    under Apache2 now reported cleanly
1171    (thanks derbaffØyahoo*com)
1172  * Bugfix: missing phpthumb_functions:: class name for
1173    ImageTypeToMIMEtype() call in ExtractEXIFgetImageSize()
1174    (thanks aidan*slingsbyØlineone*net)
1175  * Bugfix: ImageTypeToMIMEtype() was broken for PHP older
1176    than v4.3.0  (thanks georg*schreiberØbatch-pc*es)
1177  * Bugfix: RenderToFile() now returns false if it fails
1178    (thanks phpthumbØsendthemtomir*com)
1179  * Bugfix: Corrupt JPEG/PNG/GIF files that failed
1180    ImageCreateFrom*() were not being passed to ImageMagick
1181    for fallback, nor passed through unmodified if IM was
1182    unavailable or failed  (thanks r*chongØmogenic*net)
1183  * Bugfix: Improved backtick safe-mode limit detection
1184    (thanks 1Øadamcarrington*com)
1185  * Bugfix: EXIF thumbnails were being used as source when
1186    they should not be  (thanks aidan*slingsbyØlineone*net)
1187  * Bugfix: Cached files were not being created or used
1188    properly  (thanks aidan*slingsbyØlineone*net)
1189  * Bugfix: max_source_pixels not set correct on some PHP
1190    versions  (thanks derbaffØyahoo*com)
1191  * Bugfix: 'down' parameter ignored for unprocessed and
1192    cached files  (thanks aidan*slingsbyØlineone*net)
1193
1194v1.4.7 - July 27, 2004
1195  * Included a modified version of "module.graphic.bmp.php"
1196    from getID3() [http://getid3.sourceforge.net] as
1197    "phpthumb.bmp.php" for BMP reading support without
1198    ImageMagick. It works, but it's *very* slow, especially
1199    for large images (as in 640x480 or larger).
1200  * Added check to prevent error messages when shell_exec
1201    is disabled (thanks webmasterØneester*com)
1202
1203v1.4.6 - July 22, 2004
1204  * Added new section to phpthumb.config.php where you can
1205    easily specify defaults for any parameter you can set
1206    in the URL. Normally URL parameters override these
1207    default values, unless you set
1208    $PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE to false
1209  * Renamed phpthumb.config.php to phpThumb.config.php
1210    since it's part of phpThumb.php, not part of
1211    phpthumb.class.php (change of case only, will not
1212    affect Windows servers, but will affect *nix)
1213  * Changed cached filename of rawImageData-source images
1214    from urlencode('') to md5(rawImageData). This should
1215    make caching thumbnails from non-file sources more
1216    reliable.
1217  * Added ImageMagick debugging information
1218  * Removed unneccesary default values from cached
1219    filenames. This may invalidate some previously cached
1220    files. phpthumb.demo.cacheconvert.php has been updated
1221    to handle v1.4.1-1.4.5 => v1.4.6+ cache filenames.
1222  * Bugfix: Cached filename did not have file-modified
1223    datestamp when used as implmented in phpThumb.php
1224  * Bugfix: RenderToFile() now accepts relative filenames
1225    (thanks aidan*slingsbyØlineone*net)
1226  * Bugfix: AllowOutputEnlargment setting was ignored when
1227    falling back to ImageMagick
1228  * Bugfix: IgnoreAspectRatio setting was ignored when
1229    falling back to ImageMagick
1230  * Bugfix: config_temp_directory was ignored in gd_info()
1231    in PHP < v4.3.0 when phpinfo() returns no GD
1232    information (due to safe mode restrictions)
1233    (thanks mimyrtekØmyrtek*com)
1234
1235v1.4.5 - June 28, 2004
1236  * Added new parameter 'down' where you can specify a
1237    filename and OutputThumbnail() will cause the file
1238    to be downloaded rather than displayed in the browser.
1239    Demo images on silisoftware.com/scripts/phpThumb/demo/
1240    can all be downloaded to show off this feature.
1241    (thanks stuartscrumpØyahoo*co*uk)
1242  * Added ability to remove old files from cache directory
1243    based on last-access time and/or number of cached files
1244    and/or total size of cached files
1245    (thanks jrmhaigØyahoo*co*uk)
1246  * Added public CleanUpCacheDirectory() for cache cleaning
1247    (see above) if you need to call it manually
1248  * Included new file phpThumb.demo.cacheconvert.php to
1249    convert old-style cache names to the current (and
1250    hopefully last!) standard naming convention.
1251    (thanks joshgØtwcny*rr*com)
1252  * Added configuration value 'document_root' for rare case
1253    when $_SERVER['DOCUMENT_ROOT'] return incorrect value
1254    (thanks joshgØtwcny*rr*com)
1255  * Now tries to create thumbnail with ImageMagick if
1256    ImageCreateFromJPEG etc fails, before falling back to
1257    outputting unmodified source data.
1258  * Bugfix: HTTP image sources were broken
1259    (thanks fritz*weisshartØt-online*de)
1260  * Bugfix: ImageMagick callout wasn't being used if EXIF
1261    thumbnail was available
1262    (thanks joshgØtwcny*rr*com)
1263  * Bugfix: HTTP src with space in filename was broken
1264    (thanks drØrhodes360*com)
1265  * Bugfix: version_compare_replacement() was broken for
1266    PHP v4.1.0+
1267
1268v1.4.4 - June 8, 2004
1269  * Bugfix: network-share (Windows) source filenames were
1270    not possible. Now works, but you must use the network
1271    name and not a mapped drive name, for example:
1272    \\othercomputer\file.jpg - good
1273    \\192.168.2.1\file.jpg - good
1274    z:\file.jpg - won't work
1275    This is a PHP limitation (see www.php.net/file-exists)
1276    Note: you may want to use "/" slashes instead of "\" if
1277    you have magic_quotes_gpc enabled to avoid stripslashes
1278    problems.
1279    (thanks drØrhodes360*com)
1280  * Bugfix: missing "phpthumb_functions::" in
1281    ImageCreateFromStringReplacement()
1282    (thanks zapletalØsoftwaremedia*cz)
1283
1284v1.4.3 - May 25, 2004
1285  * Added new configuration variable 'config_temp_directory'
1286    to allow you to specify a writable directory name for
1287    temp files if you do not have access to the system temp
1288    directory on your server (Safe Mode restrictions etc)
1289    (thanks nickØregenmag*com)
1290  * Added new configuration variable
1291    'config_error_die_on_error' which can be set to false if
1292    you want to retrieve the error message without having it
1293    dumped as an image - the error message is now available
1294    in $phpThumb->error
1295  * Images are passed through directly with no processing
1296    and no caching if no parameters are passed to alter the
1297    image (resize, crop, sharpening, etc)
1298    (thanks nchmuraØusers*sourceforge*net)
1299  * Added new configuration variable 'config_disable_debug'
1300    which disabled phpThumbDebug from working if you have
1301    security concerns about the displayed information
1302  * Bugfix: Added detection at the top of phpThumb.php for
1303    no-GD errors to avoid parse errors later in the code
1304    (thanks nickØregenmag*com)
1305  * Bugfix: RoundedImageCorners() had some off-by-1 errors
1306    (thanks ola*thunbergØhome*se)
1307
1308v1.4.2 - May 10, 2004
1309  * Added IE-compatability mode for transparent corners
1310    (set 'bct=256')
1311  * Bugfix: version_compare_replacement() was broken in PHP
1312    older than 4.1.0
1313    (thanks nickØregenmag*com)
1314
1315v1.4.1.1 - May 9, 2004
1316 * Bugfix: Removed ImageTrueColorToPalette hack.
1317   See http://bugs.php.net/bug.php?id=28341
1318 * Bugfix: 'maxb' option for PNG/GIF output incorrect
1319   bit depth under some circumstances
1320
1321v1.4.1 - May 9, 2004
1322 * Added 'maxb' (MAXimum Bytes) option to auto-set the
1323   output image quality (JPEG) or bit depth (PNG/GIF) so
1324   that the output thumbnail is less than 'maxb' bytes
1325   (thanks e_belleØhotmail*com)
1326 * Added 'bgt' parameter to make rounded corners from
1327   'brx'/'bry' option transparent when used with PNG
1328   output. Note: PHP/GD appears buggy at this time, so this
1329   option must force output to 256-color mode for this
1330   to work. The feature will be updated when a non-broken
1331   version of PHP/GD is released.
1332   (thanks javierØircorion*net)
1333 * Bugfix: Caching was broken
1334   (thanks mikeØgdaymate*nl, jurewiczØgo3*pl)
1335
1336v1.4.0 - April 30, 2004
1337 * Rewritten as a PHP class. Split into several files:
1338   - phpthumb.class.php        = most processing code
1339   - phpthumb.functions.php    = support functions
1340   - phpthumb.readme.txt       = usage instructions
1341   - phpthumb.changelog.txt    = this file
1342   - phpthumb.config.php       = configuration file
1343   - phpthumb.gif.php          = Non-GD GIF reading support
1344   - phpthumb.unsharp.php      = Unsharp Masking support
1345   - phpThumb.php              = demo script that works
1346       exactly as previous versions; this is a drop-in
1347       replacement for existing phpThumb() installations
1348   - phpThumb.demo.showpic.php = demo script that auto-
1349       resizes a popup window to the size of the image
1350       shown. Useful if you want popup images but do not
1351       know the large image size beforehand
1352 * Added optional call-out to ImageMagick (if avaible) if
1353   source image is larger than PHP memory restrictions
1354   allow. ImageMagick installation should be auto-detected
1355   under *nix, but you should configure 'imagemagick_path'
1356   for use under Windows.
1357 * 'max_source_pixels' is now auto-calculated from PHP
1358   configuration settings. Due to various server-level
1359   restrictions that may override PHP settings this
1360   calculated value may not always be correct, and you may
1361   have to specify the value manually.
1362 * Added rounded-corner border option. You must specify
1363   both 'brx' (horizontal radius) and 'bry' (vertical
1364   radius) as well as 'bw' (border width). If 'bw' is
1365   greater than zero, the image will be shrunk to fit
1366   inside the border with a margin of background color.
1367   If 'bw' is zero, the corners of the image will be
1368   cut off and filled with background color.
1369   (thanks javierØircorion*net)
1370 * Minor speed improvement for unsharp masking
1371
1372v1.3.7 - March 28, 2004
1373 * Bugfix: GD version detection was broken on PHP <4.3.0
1374   on servers where phpinfo() was disabled
1375   (thanks javierØircorion*net)
1376 * Bugfix: Non-GD GIF support was broken on restricted
1377   PHP configurations
1378   (thanks javierØircorion*net)
1379 * Bugfix: phpThumb.gif.php output error messages if PHP
1380   was running in Safe Mode
1381 * Added 'iar' parameter (Ignore Aspect Ratio) to allow
1382   non-proportional resizing (stretch image to fit).
1383   You must specify 'h' and 'w' to use this option.
1384   (thanks javierØircorion*net)
1385
1386v1.3.6 - March 14, 2004
1387  * Bugfix: was broken when register_globals turned on
1388    (thanks joshgØtwcny*rr*com)
1389  * Bugfix: Images with transparent backgrounds now have
1390    the background color filled with the color specified
1391    by the 'bg' parameter
1392  * Bugfix: ImageCreateFromString() is broken in the
1393    non-bundled GD. Added workaround, but please use
1394    the bundled version of GD if possible
1395    (thanks dnØxbe*ch)
1396  * Bugfix: EXIF thumbnail caching was broken
1397  * Bugfix: EXIF thumbnail handling was broken for PHP
1398    v4.2.x
1399    (thanks smithk1Øshaw*ca)
1400  * Bugfix: Image borders with GD2 were misaligned
1401  * Bugfix: virtual paths/filenames like /~user/foo.jpg
1402    should now work properly, if PHP is installed as an
1403    Apache module (see www.php.net/apache-lookup-uri)
1404  * Bugfix: contents of any non-image file could be
1405    displayed (including PHP & HTML files)
1406    (thanks arsyanØarsyan*com)
1407  * Added rotation parameters 'ra' and 'ar'
1408    (thanks drØrhodes360*com)
1409  * Added $CONFIG['output_allow_enlarging'], defaulted
1410    to false, to prevent smaller-than-max-size images
1411    from being enlarged beyond their original size. If
1412    you want to be able to enlarge images, set this to
1413    false. Can be overridden with the 'aoe' parameter
1414    (thanks dnØxbe*ch)
1415  * Changed all configuration variables to be under one
1416    array named $CONFIG
1417  * Moved color and font options for ErrorImage() to
1418    $CONFIG variables
1419  * Changed cached filename structure (again) to a more
1420    flexible format that can handle future expansion
1421    (old cached files are invalid and will be recreated)
1422  * Added more debugging code to phpThumbDebug
1423
1424v1.3.5 - February 29, 2004
1425  * Added capability to use EXIF thumbnail that may be
1426    embedded in source image (often is in digital camera
1427    JPEGs) and source image dimensions are larger than
1428    $config_max_source_pixels. This will overcome the
1429    limitation where PHP runs out of memory processing
1430    large images (usually >1600x1200). EXIF thumbnail
1431    extraction requires PHP v4.2.0 or higher and EXIF
1432    support compiled into PHP (or php_exif extension)
1433  * Eliminated intermediate read-file-to-memory stage if
1434    image is created from local file. Should allow
1435    larger images to be processed without running out of
1436    memory.
1437  * Added optional 'goto' parameter to be used with the
1438    'file' parameter, where 'goto' is a URL that is
1439    redirected to after image is rendered to file
1440    (thanks wimbleØwebdonors*com)
1441  * Added optional 'xto' parameter that will bypass all
1442    processing and just return the embedded EXIF
1443    thumbnail, if available.
1444  * Added error-handling if ImageTypes() is unavailable
1445
1446v1.3.4 - February 15, 2004
1447  * Custom error image option (&err=img.jpg) which can
1448    also be set as $config_error_message_image_default
1449    (thanks carlØ4thstar*net)
1450  * &f=text will now output plain-text error messages
1451  * ErrorImage() now used for anti-hotlink messages (if
1452    $config_nohotlink_erase_image is true)
1453
1454v1.3.3 - February 5, 2004
1455  * Bugfix: Added stripslashes() to filenames if
1456    magic_quotes_gpc is enabled
1457    (thanks arsyanØarsyan*com)
1458  * Output can now be rendered to a file only (not to
1459    browser) specified by the 'file' parameter
1460    (thanks arsyanØarsyan*com)
1461  * JPEG quality now has a maximum of 95%, as specified
1462    in the GD documentation
1463
1464v1.3.2.1 - February 3, 2004
1465  * Bugfix: gd_version() was broken for GD v2.0+
1466  * Bugfix: removed debugging code
1467
1468v1.3.2 - February 3, 2004
1469  * Bugfix: when borders are enabled, portait images
1470    with no width constraint, or landscape images with
1471    no height constraint were smaller than neccesary by
1472    double the border width
1473    (thanks jjjØxs4all*nl)
1474  * Added unsharp mask option thanks to Torstein Hønsi:
1475    http://www.vikjavev.com/hovudsida/umtestside.php
1476    Note: requires GD v2.x to function
1477    (thanks jjjØxs4all*nl)
1478  * Updated cache filenames to reflect new parameters,
1479    this means old cached files will need to be deleted
1480    (or not, they just will never get called again) and
1481    new cached versions will be created.
1482  * Added caching to gd_info() calls for minor speedup
1483
1484v1.3.1 - February 2, 2004
1485  * Added optional border (width and color configurable)
1486    (thanks arsyanØarsyan*com)
1487  * Added option to create fixed-dimension thumbnails
1488    regardless of source aspect ration. Set the 'bw'
1489    (BorderWidth) parameter (even to 0) and this will be
1490    enabled. Outside the actual image will be filled
1491    with 'bg' color (default FFFFFF)
1492    (thanks arsyanØarsyan*com)
1493
1494v1.3.0 - January 27, 2004
1495  * Added watermarking option to overlay thumbnails with
1496    a semi-transparent watermark image (copied from a
1497    seperate source watermark image)
1498    (thanks arsyanØarsyan*com)
1499  * Added option for absolute filenames (on both Windows
1500    and *nix) outside the DOCUMENT_ROOT directory
1501  * Added debug output dump for diagnosing problems)
1502
1503v1.2.8 - January 19, 2004
1504  * added ability to specify relative pathnames as well
1505    as absolute pathnames (pathname is relative to the
1506    location of phpThumb.php if the passed source does
1507    not begin with "/"
1508
1509v1.2.7 - January 7, 2004
1510  * Added patch to allow use of PHP older than 4.1.0
1511    (or GD without PNG support) for non-GD GIF support
1512    (thanks hostwebserverØhotmail*com)
1513
1514v1.2.6 - January 4, 2004
1515  * Added patch to allow use of PHP older than 4.1.0
1516    (without the superglobals arrays)
1517
1518v1.2.5 - December 26, 2003
1519  * Added configuration options for default output image
1520    format and max width/height
1521
1522v1.2.4 - December 20, 2003
1523  * Bugfix: temp directory for non-native GD support not
1524    always returning valid directory
1525  * Caching feature reintroduced (see configuration)
1526
1527v1.2.3 - December 19, 2003
1528  * Added anti-hotlink code so the thumbnail script on
1529    one domain cannot be used by another domain. The
1530    list of allowed domains defaults to the current
1531    domain but is configurable below as
1532    $config_nohotlink_valid_domains. The message, text
1533    size, colors and whether to blank the image or not
1534    are also configurable
1535  * Bugfix: URL image sources were not able to use the
1536    non-GD GIF-reading functions
1537
1538v1.2.2 - December 17, 2003
1539  * Added option to use http:// URL as image source
1540
1541v1.2.1 - December 11, 2003
1542  * Added option to get source data from a database
1543    rather than a physical file
1544  * Bugfix: resize not proportional when wide image
1545    limited more by max height than max width
1546    Thanks mathias_strasserØgmx*net
1547  * Removed caching code
1548
1549v1.2.0 - December 10, 2003
1550  * Added GIF support for versions of GD that do not
1551    have built-in GIF support (v1.6.x) via the "GIF
1552    Util" class by Fabien Ezber (www.yamasoft.com)
1553    GD's built-in GIF-reading functions are faster, and
1554    are present in PHP v4.3.0 or newer, but all versions
1555    of GD can display resized GIF thumbnails now.
1556
1557v1.1.2 - October 26, 2003
1558  * check for source image existance to prevent text
1559    error messages
1560  * if GD not available, a GIF saying "no GD" is shown
1561    instead of showing the original image
1562  * Cache feature introduced
1563
1564v1.1.1 - September 28, 2003
1565  * better resize code by sfisher10Øcox*net
1566
1567v1.1.0 - September 1, 2003
1568  * initial public release
1569  * thumbnails can now be larger than source image
1570  * graphical error messages
1571
1572v1.0.0 - January 7, 2002
1573  * initial private release
1574