Group images by calendar events

If you're a heavy user of your computer's calendar and have loads of unorganized images, then you'll love jAlbum 20.2's new "Organize by calendar" feature that can tag and group (move into folders) images by matching calendar events, judging by the camera date. Here I have set up a "Seasons" calendar within Apple's Calendar app representing the four seasons Winter, Spring, Summer and Autumn.



These events are set up as yearly recurring events (inspecting the "Summer entry here"), but you might have weekly or daily recurring events for a school or work curriculum or simply ordinary single events, like "Summer vacation in Mallorca", "Visit to grandma" etc :




The next step now is to export your calendar as an ".ics" file:

Now it's time to move to jAlbum. Here I happen to have a bunch of unorganized images from various seasons:

I now right-click between them and select "Organize->Group by Calendar". I'm now presented with a dialog that prompts me to point out the .ics calendar file I just exported. You can either drag and drop .ics files or specify a URL to the .ics file. Once done, I verify that I wish jAlbum to match both single and recurring events and also have the images tagged with matching events. I finally hit the Process button.


Done! The matched images have now been grouped under folders representing each matched event. If you have nested events, that is events within events, then jAlbum will create a nested folder structure too. Great isn't it? If not, just hit undo.

Remember to check out jAlbum's other flexible organizing options, for instance "Group by Date" and "Group by Place".

 All at jAlbum 20.2!


jAlbum Bridge reborn for WordPress’ new Block Editor

In October 2018, when I released jAlbum Bridge I had no idea WordPress will replace its post editor (TinyMCE) with a completely new one (Gutenberg, later Block Editor) in two months. Unfortunately, the new editor was not backwards compatible, and even more unfortunately they failed to provide comprehensive documentation at that time.

I must admit the new editor is lightyears better in terms of user-friendliness and its WYSIWYG (“what you see is what you get”) nature. Nevertheless I finally failed turning the plugin Gutenberg-compatible. It was really frustrating; I’ve spent so much time on developing a deprecated piece of software. The plugin has received negative reviews for being “abandoned” deservedly, and even WordPress warned us they will close the plugin if we fail to update it. Finally Anders gave me hand by kickstarting the development, which was a big help.

In the new plugin it’s not only the user interface changed but under the hood all the transitions were rewritten too to make them smoother, and some new features were added as well. For instance there’s a new transition – zoom – and a few new sort options too. Editing the raw HTML title and image caption templates got removed - which was a bit techy anyway -, so you can only choose from the predefined designs now.

The new WordPress also allows the blocks to be wider than texts, which looks great with galleries – so jAlbum bridge 2+ allows this option too. Use the alignment button above the block! (Works only in themes that support it.)


The first step is installing the plugin through the Admin panel of your WordPress site.

Naturally, you can also download and place the plugin right into the /wp-content/plugins folder of your WordPress directory.

Search for “jalbum-bridge” ...

... install ...

... and “Activate”.

Back in the post editor when you click the (+) (add block) button “jAlbum Bridge” will be listed under the “Embeds” category. You can also start typing its name to find it quicker.

In the Inspector Panel enter the URL of the album’s top level page and the projector will immediately appear. You can use site root relative (e.g. /albums/2020) and absolute address.

If you want to show only a specific folder, enter the relative path to the folder in the Settings / Initial Folder box below (e.g. path/to/folder).

Most settings are self-explanatory – I hope – and the behavior is immediately reflected in the editor, which makes it so much easier to get the desired look than before.

One setting though is not applied in the editor: no links to the real album is generated. I just wanted to avoid driving users crazy who just want to select a block and they end up in the album instead, effectively leaving the editor.

By default the projector will use the Slideshow / Slide transition, but I encourage you to experiment with different transitions. Once ready press Preview to check out the final look!

Note to existing users

As WordPress’ new Block Editor has a fundamentally different way of storing the projector settings, the projectors created with earlier versions are not automatically converted to blocks. They will still appear as short codes – but no settings window is available like before. This way your old projectors will continue to work, but it probably worth adding them again as blocks.

If it’s only the jalbum bridge held you back from the new Block Editor, now it’s time to move on and enable the new interface – you won’t regret.

If you still want to keep with the short-code version here’s a small cheat sheet for the parameters:

Attribute Meaning Default
albumurl The absolute or site-root relative path to the album (mandatory).  
align The projector width: center|wide|full, where "center" has the same width as the text content. center
ar Aspect ratio – width / height – as percentage, e.g. 80 (depends on type)

The template for the image caption in HTML format. Available variables:

  • ${label} – File name without extension
  • ${name} – File name
  • ${fileDate} – File modified date
  • ${comment} – Comment added in jAlbum
  • ${title} – Title
  • ${fileSize} – File size
  • ${category} – Category: image|audio|video|other
  • ${keywords} – Keywords added in jAlbum
  • ${rating} – Rating added in jAlbum
  • ${location} – GPS location
captionplacement The horizontal / vertical placement of the image caption, e.g. right middle center bottom
captionstyle The color of the image caption: white|light|transparent|dark|black dark
depth The depth of album folder levels to gather images from. 1 = the top level only (or the given folder). The discovery will stop when the number of images reaches the required number of images. 2
disablelinks By default the projector will have links to images in the real album. By setting this attribute to true you can avoid generating these links. false
folder The initial folder the gathering of images should start. Leave empty for the top level album page! (empty)
gap Taken into account with grid type layouts: grid, masonry, mosaic, strip. Possible values: none|thin|small|medium|large|xlarge none
include The type and order of items to gather: images|folders,images|images,folders|folders images

In case of “slideshow” types this is the maximum number of images to gather. In case of “carousel” this can’t be bigger than 15. With grid-like layouts:

  • gridgrid-2-2|grid-3-2|grid-4-2|grid-5-2|grid-3-3|grid-4-3|grid-5-3|grid-4-4|grid-5-4|grid-5-5
    (default: grid-4-3)
  • masonry – number of cards: 5–100
    (default: 17)
  • mosaicmos-1-3|mos2-3|mos-1-2-4|mos-1-5
    (default: mos-1-3)
  • strip – number of cards: 2–10
    (default: 6)
(depends on type)
ordering Ordering of the images gathered original|date|date-reverse|name|name-reverse|size|size-reverse|random original
slideshowdelay The length of time between transitions (= pause time) in milliseconds (depends on transition)
skipduplicates The projector is capable of skipping duplicate images (e.g. if the same is used as folder thumbnail). You can disable this behavior by setting this attribute to false true

The template for the album caption in HTML format. Available variables:

  • ${label} – File name without extension
  • ${name} – File name
  • ${comment} – Comment added in jAlbum
  • ${title} – Title
  • ${keywords} – Keywords added in jAlbum
titleplacement The horizontal / vertical placement of the title, e.g. left middle center top
titlestyle The color of the album title: white|light|transparent|dark|black white
type Projector type: slideshow|grid|masonry|mosaic|strip slideshow
transitionspeed Length of transition in milliseconds (type = slideshow only): 0–10000 (depends on transition, typically 1000)
transition Transition type (type = slideshow only): crossfade|zoom|kenburns|stack|slide|swap|carousel|flip| book|cube|coverflow slide

Here’s how such a short code looks like:
[jalbum_bridge albumurl="/album/Lucid%20development" include="images" /] – just add the necessary parameters and you are good to go.

I hope you’ll find this litle tool a nice and useful addition to your WordPress site. If you liked it please honor my efforts by giving a somewhat better rating than today on the plugin’s page. :)

If you happen to get stuck we are here to help in the jAlbum Bridge forum.


Tell your story

with the new Story skin

Half a year ago one user called our attention on a gallery made with Adobe Spark. Besides the stunning photos, the page design was also modern and sexy. It went beyond the confines of a traditional web album, with lengthy texts between photos and stylish animations. This type of use has escaped our attention so far, although many of our users would have appreciated it, I take. This is how Story skin was born.

You can simply drop a handful of photos onto Story – they will look decent –, still this skin excels in its ability creating crafted text-heavy stories. Not only the text, but the presentation of the thumbnails is unique here. They come in 3 flavors making the layout much more exciting. Check out below!

Beyond the new look Story skin has received all the bells and whistles of Tiger or Photoblogger skins; the search, shopping cart, feedback, background music, Google maps just to name a few.

The opening view is a full screen "hero" image, which you can overlay with a semi-transparent color. If you press "Enter" the page scrolls down.

The control buttons are fixed to the top left corner so all the functions remain visible.

This page starts with a custom section. You can add one by New page → Custom.htt. Add "Title" used for headline, add content through the "Comment" field.

The images can be displayed in 3 different modes: as thumbnails, as single images and as full-width images. The skin automatically sorts them out by their aspect ratio.

The widest images are treated as full-width, the images with aspect ratio less than 3 : 2 as thumbnails. The rest in between are treated as single (column-width) images. To control these thresholds visit the Story → Design → Images panel.

If you want to override this automatic treatment for a specific image go to Edit mode → Image data → Treat image as.

These full width images might act as chapter separators. Their title is set in larger font so they stand out.

Blocks of thumbnails in masonry layout look the best if you supply the skin with images of variable orientation / aspect ratio. It pays playing with their order too for the best look.

Folders can be inserted at any place in this skin. The larger thumbnail on the left is the image selected as "Folder thumbnail", the other 3 are randonly picked from the folder on every "Make".

The folders have an alternative background color here, which can also be used for custom sections, thumbnails or simply in an alternating manner.

This skin also novel in the way it handles custom pages. You can leave them as separate pages – just like before –, but in Story you can embed them into the index page too. This results in a single-page layout, which saves visitors from unnecessary navigation.

Here you can play with this album: Tell your story

I hope you will love this skin as much as I enjoyed developing it. Comments are welcome in the Story skin forum. And you can download the skin from here.


Presenting jAlbum 20

18 years have passed since we first released jAlbum 1.0. We've now reached v20. Not that many software titles stay around for so many years so we're proud that jAlbum is still relevant, and now it's better than ever. There are about a dozen changes in this release, but here I'll focus on the top 3.

1. The details view

jAlbum's Explore mode now offers a new configurable "Details" view alongside the "File name", "Title", "Comment" and "Keywords" views.

This mode will be very helpful when dealing with a lot of metadata: You can now view and edit the aspects that matters to you at the same time while maintaining the overview that jAlbum's Explorer brings. A quick double click on the "Details" button will bring up the configurator in Preferences. Here you just drag and drop metadata aspects to your liking.


The offered aspects are Added date, Camera date, Comment, Creator, Copyright, Copyright URL, Dimensions, File name, Keywords, Modified date, Title and Size (some are read+write and some are read-only). This configurator along with jAlbum's zoom slider allows you to pick the best balance between overview and details that suits your needs.




2. Group by Creator 

Album has a powerful file organizer, somewhat shadowed by it's main role - to produce web galleries. The organizer has previously been capable of grouping files in folders based on camera date, GPS location, file name and keywords. It can also delete duplicates in the process. jAlbum 20 now adds the ability to group files by creator too, perfect for photo clubs and schools managing work from several authors.


3. New upload engine

If you've been facing upload difficulties, this change will probably be the most welcome. jAlbum 20 is fitted with a completely rewritten ftp upload engine that's designed to handle shaky network conditions better than before, and be faster too. Without getting technical about it, that's all you need to know, but for those of you who'd like to know what's been changed, here's the story:

Sidenote: This all relates to ftp, ftps and ftpes uploads, it does not affect uploads to where we use a special single connection transfer technique called "zipstreaming".

jAlbum's uploader, like any ftp transfer software utilize multiple simultaneous connections. This speeds up transfers significantly as a large portion of the per-connection time goes to negotiating information about each file transfer with the ftp server. jAlbum's existing upload engine has a pool of "worker threads" each grabbing files for processing from a common work queue. Each worker maintains a dedicated ftp connection for the file transfer operation:


One folder is completely processed before proceeding with the next folder. On stable networks, the only downside with this approach is that some threads are idling by the end of each processed folder, waiting for the last transfers to finish. In the real world however, many networks aren't fully stable. There are timeouts, packet losses and a host of issues with various ftp servers. Here's where troubles arise: When IO errors occur, the affected upload worker thread will try to reestablish a new ftp connection and retry the transfer. This does however not always work due to per-user connection limitations usually set up by those who administer the ftp server, so that file is put on a special error queue for processing by some other worker thread by the end of the upload instead. Finally jAlbum tries to write a manifest over all files processed. This is done to speed up future updates to an existing album, but sometimes fails when the dedicated connection used had troubles.

With jAlbum 20's new upload engine, the ftp connections have been decoupled from the upload worker threads, meaning that any worker thread can utilize any free connection from an active connection pool:


This gives us several advantages: On error, reattempted uploads can be performed by any free connection, and the connection pool can reestablish new connections while serving existing connections to the workers. More robust, and less time waiting for negotiation. The manifest file and folder creation is also handled over any free connection instead of on a dedicated connection. Again, more robust. Finally, the new uploader doesn't wait for one folder to be completely processed before continuing with the next folder, so we make max use of all available connections at all time.

Congratulations if you've made it this far. Just wanted to explain what an excellent uploader jAlbum 20 now has :-). Now it's the time to give it a try. Download jAlbum 20 today!

Meet the new rating widget and play with photo data!

During the development of the Filtering and Sort feature for Tiger (and Photoblogger) my mental model was a web shop where you can sophistically filter the products. However, a few users has suggested another use: filtering images by their “meta data” – the data added by the camera. This is something I always wanted to play with too. You can do such in Lightroom with your source images, but now visitors can do this in your web albums. Isn’t this awesome? Beyond the fun factor this new addition can be extremely useful when you sell images or just learn/teach photography.

Another important addition in the latest release is rating. (Find in Settings / Tiger / Site / Extra / Display rating.) By rating visitors can easily gather the best shots before they put them in the cart, or give feedback on them. The rating widget shows up in both the thumbnail view and in the lightbox.

One more thing. The search box was perhaps too subtle – hiding in the top bar – for a webshop use. Now you can choose to place it right in the middle of the “Hero” area, so no one has a chance to miss it. Settings / Tiger / Header / Top bar / Move search box within the Hero area

Check out all these enhancements in this Tiger sample album:

What’s more Photoblogger skin has received the same enhancements (besides the search box) the same day. Check out here:

By the way, this is a good example of how an album with sidebar can perform much better on “Above the fold content” front. Just check out the two screenshots above!

When your switch between Tiger and Photoblogger you don’t lose the settings either – don’t worry –, because they belong to the same skin family. (Note, it’s always best to start experimenting with a fresh copy: use File / Clone project, available in jAlbum 19+.)

Both sample albums have an “Instructions” page, which shows the technical details. Find below all the jAlbum variables worth checking out:

Name Explanation Data type
fileCategory Possible values are audio, folder, image, other, video, webLocation and webPage Single/multiple string
rating Inherits rating from the album creator, but visitors can freely modify it. Numeric range
formatName Type of image: PNG, JPG, TIFF, etc. Single/multiple string
fileSize Size of original file Numeric range
fileDate Date of original file Date range
addedDate Date of image added to album Date range
originalDate Date of picture taken Date range
resolution Original image resolution as written by camera Numeric range
flash If flash was used Single string
focalLength Focal length of the lens Numeric range
focalLength35mm Same as focalLength but converted to 35mm (film) equivalent Numeric range
exposureTime Exposure time Numeric range
resolution Original image resolution as written by camera Numeric range
isoEquivalent ISO equivalent Numeric range
aperture Aperture (F-number) Numeric range
focusDistance Focus distance Numeric range
meteringMode Metering mode (focus/exposure metering method) Single/multiple string
cameraMake Camera make (manufacturer) Single/multiple string
cameraModel Camera model (full model name) Single/multiple string
sensorType Camera sensor type Single/multiple string
keywords Keywords added in jAlbum and IPTC keywords Single/multiple string
category IPTC category Single/multiple string
You can find all the fields here, in the "File metadata" table.

... and some of the metadata of interest found in my pictures:

Name Explanation Data type
Brightness Value
Brigthness Numeric range
Color Space Color space of the recorded image Single/multiple string
Contrast Contrast Single/multiple string
Exposure Bias Value
Exposure bias value Numeric range
Exposure Mode Exposure mode Single/multiple string
Exposure Program Exposure Program Single/multiple string
Lens Model Name and spec. of the lens Single/multiple string
Lens Specification Lens specification Single/multiple string
Scene Capture Type
Scene capture type Single/multiple string
Scene Type Scene type Single/multiple string
Sensitivity Type Sensitivity type Single/multiple string
Sharpness In camera sharpening Single/multiple string
Software Software used to process the image Single/multiple string
White Balance White balance value Single/multiple string
White Balance Mode White balance mode Single/multiple string
You can find the metadata recorded by your camera by Right-click → List metadata

But this is not all. jAlbum provides the possibility of adding custom variables to pictures. In Edit mode look for the "Variables" panel on the right. Here you can add a variable (and it’s value next to it) which you can refer to in the Filtering and Sort data. These variables also work for the Search and Tag cloud features.

Still, if you happen to stumble upon some tricky metadata – e.g. you would like to read out lens parameters from a complex string – you can use the Create custom slide variable tool to mine out data from any available field. Download the tool and read the instructions here.

I hope you’ll find as fun in this as I did. Moreover this is something you can try with a Standard license or (Premium account) too. If you don’t want to bother with filling in the Filtering box, simply import my settings by using the File / Import / Import settings from a published album menu, and provide the link to the sample album above.

Comments are welcome,