Thumbscrew 1.0b2

Okay, okay. I have heard my users. You want it, you got it.

Thumbnails prefs

Two other bug fixes:

  • A slight bug in the Web page handling. It assumed all the thumbnails were PNG format; now it reflects the chosen format.

  • If you didn’t have any preferred location for thumbnails or originals, it wouldn’t have anything selected in the preference panes; now it selects Same as original.

Download

Wed, Feb 8th, 2006 | Comments (View)

Thumbscrew 0.1.1

Man, how dumb do I have to be to release an app that doesn’t do what it prominently claims? Yesterday’s release was not obeying any Max Angle constraint placed on it due to a typo on my part. Fixed.

I was incredibly impressed by the feedback I got (both here and in private), and by the number of downloads reported by VersionTracker. Hope I haven’t driven anyone away.

Updated binary and source.

Wed, Feb 8th, 2006 | Comments (View)

Thumbscrew 1.0b1

It’s here. Ready to play. Cleaned and streamlined. Try it out, and let me know what you think. If you’ve used a previous pre-release version [1], you’ll want to trash your preferences file before giving this a try.

Disk image

Download

The only caveat I can mention at this point is that the background worker thread does quite a bit more than I want it to. What this means is that it won’t quit snappily if you drag in your entire iPhoto library. It’ll keep processing, having queued up your request to Quit, “Yup, I’ll get there. Once I’m done with all 19,000 images…”

It’s the major bit of plumbing I want to fix before a final 1.0 release.

Main Window

Thumbnails Preference

You can choose other directories where thumbnails should be saved. Thumbscrew remembers these settings between running.

Originals Preference

You can scale down the original images to make them web-ready, and save them out to alternate directories.

Web Page Preference

Thumbscrew ships with a template that generates valid XHTML, but can use any templates it finds in ~/Library/Application Support/Thumbscrew/Templates/. These templates must be of a style that Nevow [2] understands. Currently, that includes HTML and XML.

Documentation about the template format will be included later, as well as further examples.

Activity Log

Thumbscrew reports on its progress, including how long it took to thumbnail how many images.

Web Page

The rendering of the template is presented here, and it can be further edited. Both the Activity Log and Web Page can be saved to the filesystem.


In addition, there are three hidden prefs that can be set outside of Thumbscrew:

  • TSRecursivelyProcessFolders - when you drop a folder onto Thumbscrew, it will ask you if you want to drill down and thumbnail all images found. Setting this to TRUE will prevent the dialog from asking each time. Default is FALSE.

defaults write com.urbanape.thumbscrew TSRecursivelyProcessFolders -bool TRUE

  • TSThumbnailImageFormat - by default, Thumbscrew creates PNG files, since they support full alpha channels. I don’t know whether it’s CoreGraphics or what, but Panther makes these HUGE. It’s the single most numerous request I got, so here it is: You can set the output format to JPEG, though in doing so, you’ll likely want to set the next hidden pref, too. Valid values are PNG, JPEG (or JPG), and TIFF (or TIF). Default is PNG.

defaults write com.urbanape.thumbscrew TSThumbnailImageFormat ‘JPEG’

  • TSThumbnailImageBackgroundColor - by default, Thumbscrew sets the background color of the thumbnail image to white with 0% opacity. If you’re creating JPEGs and want the thumbnails to match your site, you’ll want to include a background color. Values are floats from 0.0 to 1.0, for each of Red, Green, Blue, and Alpha. For JPEGs on a white background, for instance, you would use -array -float 1.0 -float 1.0 -float 1.0 -float 1.0, while for PNGs with a transparent background, you could use anything for the first three, and -float 0.0 for the alpha channel. Default is (1.0 1.0 1.0 0.0).

defaults write com.urbanape.thumbscrew TSThumbnailImageBackgroundColor -array -float 1.0 -float 1.0 -float 1.0 -float 1.0

[1]

Like the one listed on DrunkenBlog

[2]

That’s pronounced Nouveau (for Matt)

Wed, Feb 8th, 2006 | Comments (View)

Selecting Base Paths in Thumbscrew

I’m curious if any of you currently use the Web page feature of Thumbscrew. I use it mostly for my blog posts (I use PyBlosxom and use the reStructuredText plugin), and its development has mostly been to scratch my own itch. I’ve seen feedback both in private and on VersionTracker and MacUpdate asking about a few possible features:

  • incorporating FTP/WebDAV for actually posting the Web pages

  • relative links/base tag/DOCROOT or the like, so the page isn’t riddled with /Users/foo/path/to/thumbnails/

Frankly, I’m a little intimidated by the first part. I’d be much more likely to put something together and send it to MarsEdit or some other app altogether.

The second has me interested, though, and is a bit more exciting from a UI point of view. Here’s my typical workflow, and how I might approach this. After thinking about this in my head for a while, it seems to be an overly geeky solution.

So, here’s my server setup. All my blog posts are somewhere within the hierarchy of /home/zbir/html/blog/ (organized by categories and whatnot). All the images are in /home/zbir/html/images/ (with subdirectories for photos/ and thumbnails/). This whole setup is mirrored on my laptop substituting /home/zbir/html/ with /Users/zbir/Sites/. A typical edited image stanza for me looks like this:

.. |DSCN5380| image:: images/thumbnails/DSCN5380_thumbnail.png
   :target: images/photos/DSCN5380.jpg

And the template that renders the final page on the server specifies a which allows me to use relative paths like that. It’s so far been a small enough amount of work to just do a find/replace for the first part of those paths and wipe them out, but I would love to have Thumbscrew do it all for me.

One solution I’ve imagined is this. Say you take the two paths (one for thumbnails and one for originals), and find the full path that is at least shared between them. For my setup, that shared path would be ‘/Users/zbir/Sites/images’. Now, I could come up with a UI that presents those elements in a way that allows you to select the base path as far as your web server is concerned, like the Finder does:

Finder Breadcrumbs

In my case, ‘images’. Once that is selected, then the paths formed when applying the template would trim off everything up to that base path.

Does this make sense at all? If no one really uses the Web page features from Thumbscrew, I’ll probably implement something like this and just use it myself.

Wed, Feb 8th, 2006 | Comments (View)

Say Hello

This is the new face of Thumbscrew

Thumbscrew 1.0Thumbscrew 1.0 working

Many users sent me feature requests that were jaw-droppingly obvious, so I added them. Users wanted:

  • Preferences to keep your settings between sessions

Thumbnails Pane

  • An alternate place to save thumbnails

  • Better feedback when images were dropped

  • Folders supported in addition to a group of images (for instance, you can now drag in Albums from iPhoto)

  • Alternate thumbnail formats

  • Speed! Thumbscrew now uses CoreGraphics (Quartz) for its thumbnail processing, and threads for a responsive UI, and the results are outstanding:

    • Processing thumbnails is now over 10x faster than before

    • Gamma is preserved (meaning no more dark thumbnails - PIL on the left, and CoreGraphics on the right)

Before and After

In addition to these improvements, I’ve added two new features that I think will provide a lot of value:

  • Rescale the original image (and save it to another location)

Originals Pane

  • Generate a Web Page of the thumbnails created (in either HTML or reStructuredText)

Web Page Pane

It’s not yet ready for general release, but I wanted to let people know I’ve been listening to the feedback I’m getting. It will remain free for everything it currently does (plus the extra thumbnailing features), but I’m planning on charging a small fee to unlock the new features.

Wed, Feb 8th, 2006 | Comments (View)

Thumbscrew

You might have noticed all the thumbnails on this site. Maybe you haven’t. In any case, I wanted something that would easily generate that nonchalant, scattered look, so I wrote a script in Python using PIL to do it. It worked well enough, but I wanted to be able to distribute it and let others play, so I wrapped it up in a tidy little app. I call it Thumbscrew, since it thumbnails and rotates.

ScreenshotScreenshot in Progress

You can set the maximum angle that any given thumbnail will be rotated (plus or minus), the maximum size of the thumbnail’s bounding box (before rotation), and the border thickness. I’ve provided some handy default options, and the combo box lets you set the values arbitrarily.

I’ve passed it around to a few friends, and am already getting feedback and feature requests!

It’s written in Python, using PyObjC for the GUI, and I’m distributing the source with the MIT license. If you don’t want to use the GUI, you can also just use the included Thumbnailer.py module which is where the heavy lifting occurs, but you’ll need PIL installed. To build the source, you’ll need Bob Ippolito’s py2app distutils extension.

Downloads: binary and source

Tue, Oct 19th, 2004 | Comments (View)