Hanami Image Viewer

Hanami Image ViewerHanami image viewer is a simple Java image viewer for use on Windows, Linux and Mac OS X. Originally designed to be a IrfanView replacement for Linux (since running Wine at the time was not an option). I eventually got tired of IrfanViews poor GIF animation support and the fact that it had begun to center images scroll without any option to change it. This made it very annoying to read comics in the viewer. So I decided to rectify the situation.

GitHub Page

Download Latest

History

I had an original prototype written named HanaView, however it was impossible to add additional functionality to the program. Then I moved onto a new application called Hanami, which was the predecessor to this one. It was pretty much all structure however, to make things easier in the ‘long run’. However I noticed that it was several times larger then HanaView despite having pretty much none of its functionality.

So I created a new project named HanamiLite, which is what this project is based on. For public use I renamed it Hanami since no one else had even seen my previous project. With this version I made a number of ‘prototype’ applications. Each very very small and self contained that did one thing and one thing only. One was scrolling an image, another handled resizing the frame when an image was loaded, another used threads to load an image as to avoid locking up the UI, and yet another handled Animated Images.

I then combined all these small functions togeather into a larger program, wrote glue code to allow them to play nice together. In the end I ended up with a very tiny image view. Which I finally dubbed Hanami.

Unfortunately I ran into another issue, I noticed the program failed to open some images on windows. This was troublesome and I did considerable research into this problem, before discovering it was a problem in Windows itself. It turns out it doesn’t support unicode paths on Windows. This forced me to write a Window only launcher that does support unicode and encode the path before I pass it to Hanami, which then decodes it and reads it.