makethumbs old news announcements

This page is a repository for historical news announcements. See the main makethumbs web page for information about the current makethumbs.

2002-05-31 version 1.239

A new command line option, --preview-mode (-p) has been added. It skips all image generation except thumbnails and skips slideshow generation; makethumbs runs a lot faster. It's especially useful to check index HTML changes, rotations, and captions. Once the look and feel is settled, you can have makethumbs generate the whole deal by re-running.

Small performance boost for certain types of basic galleries, only in the 10-15% speedup range.

German translations are now available thanks to Jörg Lippmann <joerg@donalbain.de>. Thanks Jörg!

Reference documentation is available. There really needs to be more user documentation and general discussion of page layout (which variables occur on a given page), but I finished the reference section where all .makethumbsrc settings are documented, and I wanted to make that available for everyone. It's not the prettiest thing I've ever seen, but it is comprehensive. An index is high on the list of things to figure out, too.

More support for different environments. I'm sure there are still systems where makethumbs has problems - please let me know about them or I can't fix it. Added support to get timestamps from webcam32 webcam pictures, in addition to the existing Chillcam support.

2002-03-12 version 1.227; rotate.sh version 1.20

More portability fixes. Both scripts have been tested on Solaris 2.7 and Cygwin, and will work correctly on these OSes as long as a shell more capable than their /bin/sh can be found (e.g. ksh, bash). Two more fixes for interoperating with older versions of ImageMagick. Two or three small bug fixes in makethumbs.sh are included as well.

2002-03-10 version 1.223

Portability fixes. I was using some extended regular expressions in my egrep calls which were not very portable, either to Solaris or to older versions of GNU grep. I was also using a flag to ImageMagick's identify program which was only added a couple years ago. These problems would occur for Solaris or older Linux distribution users (e.g. RedHat 6.1). Thanks to Lloyd Cha and Tom Limoncelli for the bug reports.

New .makethumbsrc variable added, preferred_image_tools. It may be set to either imagemagick or netpbm if you would prefer that makethumbs use one or the other. makethumbs will ignore your preference if only one of these two image manipulation tools are around, but if both are present, it will do as you've asked. The functionality should be the same with either tool choice, but if another portability problem comes up with makethumbs and older versions of these tools, users will have a way to direct makethumbs towards working utilities

Thanks to Alain Labarthe, French translations for makethumbs are now available. Thanks Alain!

2002-03-07 version 1.219

localization is the theme of this release. Variables have been added so all of makethumbs' output can be localized to other languages. Thanks to Roberto Scliar and Paolo Priotti, translations for Portuguese and Italian are available already!

If anyone is willing to submit more languages, start with the English phrases file below. It's not difficult--it's about ten phrases plus the names of the months. The current translations are:

Put these variable settings in your ~/.makethumbsrc file and all of makethumbs' generated HTML will be localized for your language.

New variables added: boilerplate_index_after_table_before_indexlinks, this_page_created_text, image_xx_of_yy_text, image_set_n_text, image_set_all_text, reduced_image_text, large_image_text, original_image_text, index_page_title_start_html, image_page_title_end_html, slideshow_page_title_start_html, slideshow_page_title_end_html. The variable named in the form of monthname_01 were all renamed to monthname_01_text. Almost all of these are for localization; the index_page_title_start/end_html and slideshow_page_title_start/end_html are used to change the <H1> and <H2> markup used in the titles on the index and slideshow pages. Those default settings can result in some large titles, so some people may prefer more subdued titling.

makethumbs' HTML has been made closer to XHTML. I didn't change the DOCTYPE from HTML 3.2 because users who add their own markup will rarely conform to the stricter XHTML definition.

2002-02-24 version 1.205
Another EXIF reader supported, gphoto-exifdump. I see the libexif project exists and provides a exif program--I'll have to add support for that as well in the near future. I still think jhead formats the EXIF data the cleanest of them all.

A little cleanup on boilerplate variables. The set of variables affected is

boilerplate_type_insert_in_head
boilerplate_type_before_title
boilerplate_type_after_title
boilerplate_type_end_of_page

In addition to type as "slideshow" or "index", you can omit that qualifier and have the setting take effect on both types of pages. e.g. you can set boilerplate_insert_in_head and the specified text will be inserted on both slideshow and index pages. You can still use _slideshow_ or _index_ to set the variable for only one type of page if you wish.

2002-02-18 version 1.200
makethumbs will now work correctly on lyin', cheatin', stealin' case-insensitive filesystems like Windows' NTFS and MacOS X's HFS+.

New variable, use_timestamps_as_captions, enabled (1) by default. makethumbs will use image timestamps as captions when there's nothing more interesting to use, but you can force this off by setting this variable to 0. This could be useful if your timestamps are wildly inaccurate, or if you just prefer they not be on the index page. Thanks to Andrew Morton for the suggestion.

The variable dont_change_file_permissions has been replaced by a variable with the inverse meaning, change_file_permissions.

boilerplate_ variables added for slideshows in addition to the index pages. So the list of variables you're likely to want to set when making makethumbs generated pages fit in with the rest of your site design:

Index pages:

print_title_on_index   (boolean)
boilerplate_index_insert_in_head
boilerplate_index_before_title
boilerplate_index_after_title
boilerplate_index_end_of_page

Slideshow pages:

print_title_on_slideshow   (boolean)
boilerplate_slideshow_insert_in_head
boilerplate_slideshow_before_title
boilerplate_slideshow_after_title
boilerplate_slideshow_end_of_page

On all pages:

body_tag
boilerplate_footer

Note that the boilerplate_whatever_end_of_page text is responsible for providing the </BODY></HTML> markup. The boilerplate_footer, on the other hand, is not. The boilerplate_whatever_insert_in_head is text that will be included in the <HEAD> section of the generated pages. You might use this to specify a style sheet or include some Javascript or what have you. The body_tag variable is the full HTML of the <BODY> tag you want in your files--set your page color and what have you with this one.

As always, suffixing "_FILE" to the end of any of these settings names indicates that the text to substitute is found in the filename listed. e.g. boilerplate_footer_FILE=~/.makethumbs-foot will instruct makethumbs to get the text for the footer from ~/.makethumbs-foot.

Using all of the above settings, you can customize the look of your makethumbs pages pretty well. For instance, see Daniel Eisner's car photos.

2002-02-12 version 1.194
makethumbs.sh will now use ImageMagick instead of netpbm if it's present. In some sloppy informal tests on smallish image galleries, I was seeing a small speedup when using ImageMagick. On larger image galleries, I saw no change in runtime (the runtime of makethumbs itself dominated, not the particular image utility being used).

The decision of whether to use netpbm or ImageMagick is made automatically depending on what executables are in your $PATH, so don't worry about setting anything.

Please let me know if you see any problems with this. I've done a fair amount of testing on my own local system, but people with markedly different environments may have troubles and I can fix those quickly - just let me know.

2002-02-09 version 1.192

Big new feature: Large image support. For images larger than 1600x1200 (i.e. from something larger than a 2mpixel digicam), create a new size reduced image size, a bounded box of 1280x1024 by default. This gives people an intermediate between the full-size original and the reduced 640x480 images with the original images getting up to 2500x2000 with the new cameras. Be sure to get rotate.sh of at least revision 1.14 (after January 23) if you're using a digicam of three megapixels or over--older revisions won't tidy up the large images correctly.

There are a few small optimizations that will reduce runtime a lot for certain sets of images.

I added a feature destined for extremely rare use: JavaScript is put in the image slideshow pages which will make "n" or "k" move to the next image and "p"/"j" move to the previous image. I stole the idea from Per Bothner's image gallery scripts and got help from Brian Smith to make the JavaScript work with both Mozilla-based browsers and Internet Explorer.

As always, lots of new options! Yay, everyone loves new options. (gotta write that documentation some day...) dont_change_file_permissions to turn off all of makethumbs' file chmod'ing behavior; file_readable_permissions, dir_transversible_permissions if you have some specific modes you'd like makethumbs to enforce. All large image creation can be disabled by setting create_large_images=0. print_img_size_on_slideshow will control whether the file sizes are displayed on the slideshow pages, and if you are doing it, you can set slideshow_image_size_across_two_lines to set whether the sizes are printed inline with the clickable links or on seperate lines -- the seperate lines looks better, but it eats up valuable vertical space. slideshow_images_are_clickable will control whether the inlined image on the slideshow pages is clickable or not. By default, it is not, but the default was 'yes' until now and some people might prefer that. slideshow_print_javascript_navigation determines whether or not the new JavaScript hotkey navigation is emitted in the slideshow pages. For the new large images, large_trigger_height and large_trigger_width define the sizes above which the large file support is triggered, and large_height and large_width are the dimensions that the large image will be reduced to.

2002-02-03 version 1.177

Big new feature: Multiple index.html files when you have lots of images. makethumbs will put ten rows of images (or thirty images by default) on each index page that it creates. This will help browsers who are on a slower net connection and are presented with a lot of images. Thanks go out to Andan Lauber whose 596 image gallery pushed me to finally implement this.

There are some new variables to control the behavior, and a command line option. Using the --one-index-page command line option will disable the behavior, as will putting single_index_page=1 in your .makethumbsrc. rows_per_index_page will control how many rows will go on each index page; the default is 10.

Another new feature is that you can control the order of the images on the makethumbs-generated page via the [captions] section of the descriptions.txt file. Move the files around in the [captions] section, re-run makethumbs, and that's the order they'll be placed on the web page.

New hooks provided for customizing makethumb's text ouput: boilerlate_index_head_stuff, boilerplate_index_before_title boilerplate_index_after_tile, boilerplate_index_end_of_page. As you can guess by the names, these are all text that'll be inserted on the main index.html page for a makethumbs gallery, either in the <HEAD> section, or before/after the page title, or at the bottom of the page. If you want your makethumbs-generated galleries to match the look and feel of the rest of your site, you should be able to customize its output sufficiently with these new variables. There is also the variable print_title_on_index (default 1) to suppress the title on the index.html file, if that is necessary for your page design.

A new variable setting mostly for my own use - show_timings - which, when set, will cause makethumbs to report how many seconds each stage of its execution took.

2002-01-27 version 1.170

New heuristics added for the captions on the main index.html. It's all rather involved, but the end result should be more meaningful captions in most cases. The worst case is that you'll have the same old boring captions you had in the past. I think the better cases will pleasantly surprise you. There isn't enough room in the margin of this <dd> to explain the details, but I can outline it if anyone is curious. This new facility is one of the big payoffs for all the timestamp-grubbing code I've been working on for the last few weeks. Ian Lance Taylor's captioning style got me thinking about all of this stuff - thanks!

The old .makethumbsrc variable footer_text is now called boilerplate_footer. I anticipate adding more boilerplate_ variables as people can spot good places for them. The old image_subtitle_text variable is now image_imprinting_text. It's easier to understand what it does with the new name.

More date recognition methods, plus a new dates.txt file is maintained automatically by makethumbs to cache the timestamps of images. You may edit the dates in this file by hand and makethumbs will not overwrite them.

By default, makethumbs will no longer put a "Large version" link on the index page under each image, and it won't show the filesizes. (The filesizes were really only necessary for the full-sized images). This means users will need to click through the slideshows to see the original photos. This is a good change right now, but it'll make even more sense in the future as I roll out some other little new features.

New --clean command line option to remove all makethumbs generated files. Files that you may have edited will be moved aside (foo goes to foo~) so that any changes you've made won't be lost. Regenerating all the thumbnails and reduced images can take a long time, so I wouldn't use this as a normal part of your makethumbs workflow.

A number of obscure bugs were fixed.

2002-01-23 version 1.152
Added a few more ways for getting the time/date of photographs--all your timestamps are belong to us. I've put the version string at the top of both makethumbs.sh and rotate.sh so you can spot the revision easily (or use the --help command line option). New variable, boilerplate_footer, which can be set in your .makethumbsrc. The value of boilerplate_footer will be put at the bottom of all makethumbs-generated HTML pages. You can see a small example page where I use this option.

A new feature exists with the .makethumbsrc file for multi-line values (like the boilerplate_footer). Instead of writing

  boilerplate_footer="Pages by Jason! Weee!"
You write
  boilerplate_footer_FILE=~/.makethumbs-footer
and put
  Pages by Jason! Weee!
in ~/.makethumbs-footer. This works with any .makethumbsrc variable--suffix the variable name with _FILE and the value in the .makethumbsrc file is a filename where makethumbs should fetch the text from. The entries in the .makethumbsrc cannot span multiple lines, so you'll need to use the _FILE mechanism if you want multiline text.

Also some internal code reorganization to make code maintenance easier and a few minor bugs squashed.

2002-01-23 rotate.sh version 1.14
Fix the non-destructive rotation used when jpegtran is absent so that it works correctly. Minor code cleanups.

2002-01-13 version 1.126
Multiple .makethumbsrc files are supported. You can have a global .makethumbsrc file in your home directory, and override/set directory-specific things with a .makethumbsrc file in an image directory. I used this in another test directory to use the compact index mode with larger thumbnails and four images per row. These settings are only set in this directory because of the .makethumbsrc file in that directory, and I can re-run makethumbs without remembering all the options I used.

You can subtitle reduced images with text by setting image_imprinting_text in your .makethumbsrc. This is useful for adding a copyright notice to the bottom of your images, for instance. The mogrify program from ImageMagick is used to do the text imprinting right now, so it'll only work if ImageMagick is installed. I think there was a netpbm program to do this as well, so I'll probably switch to that in the future if I can.

There were also a few minor bugfixes.

2002-01-09 version 1.119
After much consideration, I've changed the default reduced image size to 640x480 from the previous setting of 800x600. I like the detail present in the 30% larger size, but I've seen countless people browsing makethumbs generated image galleries whose browser windows are not large enough to view the whole image without scrolling around. If the image owner has added per-image descriptions (which are displayed below the image), users won't see the descriptions.

If you'd prefer the 800x600 setting (or any setting, for that matter), set the reduce_width and reduce_height appropriately in your .makethumbsrc file. Note that the reduce_trigger_width and reduce_trigger_height are set to 1024, 768 respectively. Any image larger than the trigger dimensions will be reduced; any image smaller will be left alone. The purpose of the trigger is to avoid reducing an image that's 805x600 pixels down to 800x600 -- reduction should only be done if there'll be a real benefit. If you're changing the reduce_height and reduce_width a lot, you may need to change the trigger settings as well.

2002-01-06 version 1.117
The first work on getting meta information out of EXIF tags is done. metahtml will now try a number of strategies for getting the time/date a photo was taken out of the file, and it'll include that information on the per-image slideshow pages it creates. You'll need to install one of the exif-reader programs to benefit from this. I'll be adding some more features which benefit from EXIF meta data in the future.

Also new is the --compression command line option; use this (or the compression_level .makethumbsrc setting) to change the compression amount used when generating thumbnails and reduced images. The default is 75. Setting it to 50 can give you a 30% disk space savings in your reduced images with little visible image quality loss. Around 40 the compression artifacts start to build up. With the compression_level set to 50 instead of 75, the total size needed for 19 reduced images on the sample page shrinks from 1.7MB to 1.3MB.

The per-image slideshow pages now include a "Image xx of yy" counter to indicate how far along in the gallery a user is.

Several small bugfixes. Thanks to Andan for bug reports, thanks to Lloyd Chu for information about Olympus digicam file naming schemes.

2001-12-29 version 1.90
Big new feature: A standalone file for defining image captions, image descriptions, a title for a collection of images, and a longer description for a collection of images. When you run makethumbs, it will create a descriptions.txt file for you. Edit this file, re-run makethumbs.sh, and the index file and slideshow pages will all use the new descriptions. With this, you should rarely have to edit one of makethumbs's generated HTML files.

A few more small bug fixes and slight UI changes in the slideshow pages, but the important thing is the new descriptions.txt file.

2001-12-27 version 1.78
One new feature, --compact-index (compact_index_page=1 in your .makethumbsrc) to create an index page with smaller thumbnails in a more compact presentation.

A bug fixed with the thumbnail size specifier thanks to a bug report from Meg Lauber. The max_thumb_height and max_thumb_width variables are now gone, there is a single max_thumb_size variable to control the bounding box of thumbnails. It can be set in your .makethumbsrc with a directively like max_thumb_size=nn.

2001-12-24 version 1.76
Two new features: makethumbs will display progress to the user as it runs, and makethumbs will now remove your index.html file when you re-run makethumbs if and only if you have not modified it. Most common uses of makethumbs involve running it multiple times (usually to fix up rotations), and previously makethumbs would not overwrite an existing index.html file. makethumbs still will not touch an index.html file that a user has modified. The --quiet command line option can be used to suppress the new progress updates.

A few small bug fixes. Most notably, add links to the main index by naming it explicitly instead of the old <A HREF=""> trick--both Mozilla and Mac IE are messing that up. This is also needed when writing makethumbs generated pages to a CD-ROM and browsing over the local filesystem.

2001-12-23 rotate.sh version 1.3
A set of heuristics added for guessing the filename when the user doesn't supply the whole thing (e.g. omits the extension) or uses the wrong case. Also added in v1.3 is a shorthand of "l" for rotating left and "r" for rotating right. You can now use "rotate.sh l dscn00321 dscn00327" to rotate DSCN00321.jpg and DSCN00327.jpg ninety degrees counter clockwise. Even better, if it's unambiguous, you can use "rotate.sh r 21" to rotate "DSCN00321.jpg" 90 degrees clockwise.

2001-11-18 version 1.67
Add a slideshow feature, enabled by default. It can be disabled with --without-slideshow, or overridden in your $HOME/.makethumbsrc file (``create_slideshow=0'').
Add a new setting, html_charset which can be set to specify the character set of your web pages; again you can set this in your .makethumbsrc with something like ``html_charset=euc-jp'' for Japanese.
Add a bunch of variables for setting the navigation links on the slideshow pages. For each navigation item, there are three variables--the markup before the link, the markup under the link, and the markup after the link. The defaults are
  
  slideshow_previous_pre_link="<h2>["
  slideshow_previous="previous"
  slideshow_previous_post_link="]</h2>"

  slideshow_next_pre_link="<h2>["
  slideshow_next="next"
  slideshow_next_post_link="]</h2>"

  slideshow_ret_to_index_pre_link="<h2>["
  slideshow_ret_to_index="index"
  slideshow_ret_to_index_post_link="]</h2>"
For the three main navigation links. Thanks to Tim Meggs for the great suggestions. makethumbs.sh is now 1,300 lines long--utterly obscene. New motto for makethumbs home page, courtesy of Tim Meggs.

2001-11-09 version 1.59
Add $HOME/.makethumbsrc file support; you can override any of the internal global variables through this file. I also added new $GLOBAL_body_tag and $GLOBAL_meta_tag variables; you can override them in the .makethumbsrc to customize the appearance of your HTML pages (and you won't need to keep tweaking this script each time you download new versions!) No one person was asking for this, but several people override the defaults by hand.
As an example, you can set the colors on all the web pages makethumbs.sh creates with an entry in your .makethumbsrc file like:
  body_tag=<body bgcolor="black" text="#ffffff" link="red" alink="yellow" vlink="green">

2001-11-08 version 1.57
Added --remove-originals command line option, thanks to a suggestion from Tim Meggs. This is useful if your web site disk space is limited and you really don't need 3 million pixels of your cat. With this option, every time makethumbs creates a reduced version of an image, the original version of that image will be removed. Don't run this on your only copy of images!

2001-11-04 version 1.55
Thanks to a suggestion from David Webster, added new rotate.sh script and modifications to makethumbs to support it. Handy if images off your digital camera are occasionally 90 degrees askew. The usage is to (1) run makethumbs on your images and see what you've got. Then (2) run rotate.sh to rotate right any images that need to be so rotated, run rotate.sh to rotate left any images that need to be so rotated, and then (3) remove the original index.html that makethumbs created and re-run makethumbs.

2001-11-03 version 1.54
Versions 1.45 - 1.54 are a complete rewrite of makethumbs. It will be much easier to read, bug fix, and enhance in the future. It now handles GIF and PNG images.

2001-07-14 version 1.44
Final revision of first cut at makethumbs.sh.

1998-09-14 version 1.1
Initial version.


This page last modified 2002-05-31.