Introduction

JPEGView is a viewer/editor for JPEG, BMP, WEBP, PNG, TGA, RAW, GIF and TIFF images. It is designed to view images from digital cameras full screen and with highest quality possible. Basic image editing functionality is provided - allowing to correct typical problems as color cast, high/low contrast and under- or overexposure very quickly and interactively during review of the images. JPEGView does not replace a full blown image editor - such an editor will just be needed less often.
Features:

Installation

There is no installer for JPEGView because none is needed. Just copy or extract all files to a folder on your harddisk (e.g. C:\Program Files\JPEGView\).
To define JPEGView as your default viewer for image files, perform the following steps: Hardware Requirements
Supported Operating Systems
Supported Languages
By default JPEGView uses the same language as the operating system. However another language can be forced using the INI file. Translations to other languages can be done very easily by providing an UTF8 coded text mapping file, see strings_de.txt as an example.
If you want that your translation is included into the next JPEGView release, contact me at jpegview@gmail.com
Registry
JPEGView does not touch the registry except when registering file extensions to be displayed with JPEGView. This will add some registry entries in the 'Current User' branch of the registry.
Created Files during Runtime
The only location where files are written (the parameter DB and the user INI file) is in 'Users\Username\AppData\roaming\JPEGView\'. Notice that the exact path depends on the Windows version. For exceptions of this rule see next section.
Note that these files are only created when they are needed, e.g. when the first parameter set is stored to the parameter DB.
Forcing user data storage in EXE path
By setting StoreToEXEPath=true in the global INI file, the storage location for the user INI file and the parameter DB can be changed to the EXE path of JPEGView. This makes sense when using JPEGView from an USB memory stick to prevent storing data on the host system.
Restricted Rights
JPEGView runs without problems on accounts with restricted rights. Setting JPEGView as default viewer for already registered file extensions may fail without administrator rights when using Windows Vista, Windows 7 or later.

Using JPEGView

Getting Started

For getting started, the following commands in JPEGView are the most important ones:

Navigation Panel

Navigation panel
From left to right:
- First image in folder, Previous image, Next image, Last image in folder
- Delete image file (to recycle bin, use Shift+Del to delete image files permanently)
- Zoom mode, when active zooming can be done by pressing the left mouse button and dragging the mouse to the left and right
- Actual image size / Fit image to screen
- Window mode / Full screen mode
- Rotate clockwise, Rotate counter-clockwise
- Rotate image by any angle, e.g. to perform horizon correction
- Perspecive correction, corrects tilted vertical edges
- Keep image processing parameters and zoom/pan between images
- Toggle landscape picture enhancement mode
- Toggle display of image information (EXIF)

Full Screen Mode / Window Mode

By default JPEGView starts in full screen mode on the largest monitor attached to the computer. A window mode is also supported. Toggling between full screen and window mode is done with F11 or with the button on the navigation panel.
By changing the INI file, it is possible to force JPEGView to start in window mode and to use a different monitor respectively window position and size. Note that when changing the window size with the mouse, the image is not scaled automatically to fit the new size. Press then Enter key to fit the image to the window.

Viewing Images

Navigation

To navigate between images, the following commands are supported: The basic navigation command (First image in folder, Previous image, Next image, Last image in folder) are also available on the navigation panel, transparently blended over the image.
JPEGView uses a second thread to read ahead and process the next image. Guessing the next image is based on the last navigations.

JPEGView supports the following navigation modes: The default navigation mode can be changed in the INI file.

The display-order within one folder is also configurable: The default ordering can be changed in the INI file.

Image Information

Image and EXIF Information
Use F2 to display information about the current image, including the value of some EXIF tags, e.g. date and time the image was taken and exposure information. Optionally the histogram of the image can be displayed below the EXIF information. The histogram is updated immediately when the image is processed.
File Name and Path
Use Ctrl-F2 to display the full path and file name of the current image.

Zoom and Pan

Images can be zoomed and panned interactively. While zooming, a lower quality image processing mode is used. The image will be processed automatically with the high quality resize filters as soon as no zoom command is received for about half a second.
By default, images that are larger than the screen are scaled down to fit the screen. Images that are smaller than the screen are not scaled by default. Use the following commands to change the zoom factor:
Because almost all images from digital cameras must be sampled down for a typical monitor, the downsampling filter has been choosen carefully to provide an optimal image quality. The downsampling filter uses a 7 x 7 to 15 x 15 (depending on resize-factor) Lanczos-like filter kernel. This kernel produces only a small amout of aliasing while preserving or even slightly enhancing the sharpness of the image. You can see the difference to simple point sampling when pressing F3 what toggles between point sampling and filter based sampling.

Auto Scale Mode

The auto scale mode determines how images are fitted to the screen. The default auto scale mode is read from the INI file, however the mode can also be changed during runtime with the context menu, submenu 'Auto scale mode'.
The following modes are supported:

Rotate

With the 'Arrow down' and 'Arrow up' keys, the current image can be rotated clockwise, respectively counter-clockwise. Note that JPEGView looks for the rotation tag in the EXIF data to rotate the image automatically. Some cameras have an orientation sensor and set this tag.
To rotate a JPEG image lossless on disk, use the R and T keys.

Crop

When the Ctrl key and the left mouse button are pressed and the mouse is dragged, a selection on the image can be defined. After having defined a selection, a context menu provides the following commands: Hint: Use a large zoom factor and the point-sampling mode (F3 key) to crop with pixel precision.
Note: When the crop-menu appears, the crop rectangle can still be edited by clicking on the handles or on the border of the rectangle. Use the right mouse button to display the crop-menu again when the crop rectangle has the desired size.

Lossless JPEG Transformations

The JPEG compression scheme consists of multiple steps. Some of the steps are lossless, others are lossy. Because of the lossy steps, each editing operation involving a recompression results in a (moderate) quality decrease. Lossless JPEG transformations do not include any of the lossy compression steps and therefore should be prefered whenever possible. However only a very limited number of operations can be done lossless on JPEG images: Note: Due to the structure of JPEG files, all these transformations only work if the width and height of the JPEG image is a multiple of the JPEG compression block size. This block size is 8 or 16 pixels, depending on the chrominance subsampling used for the image.

Slide Shows

JPEGView can display the content of the current folder (or folders if the navigation mode is set accordingly) as a slide show. Alternatively a text file can be used to list the image files being part of a slide show.

Slide Show Text File

A text file containing file names can be passed on the command line to JPEGView. Alternatively such a file can be loaded using the 'Open image' command. The following text file formats are supported: All text formats must contain one file name per line. The file names must use paths relative to the folder of the slide show text file or absolute paths and must be terminated either with a hyphen ("), with a newline character or with a < character.
The following examples show possible line formats:
d:\Images\test.jpg
test.jpg
"d:\My Documents\test.jpg"
<image>d:\My Documents\test2.jpg</image>
Note that the parser searches for a path marker (looking for :\ or \\) and ignores all text before the first found path marker. Starting from the path marker, the parser searches forward for an end marker (newline, " or <) and everything after that end marker until end of line is also ignored.
A slide show file list is a sort of virtual folder containing all images listed in the slide show file.

Using Slide Shows

The following commands can be used to control a slide show: If the current context is a folder and not a slide show list, the slideshow is performed with the images in the folder. The folder navigation mode and the sorting order are taken into account in this case - with a slide show list they have no effect. For showing the images in a folder in random order, press 'z' before starting the slide show (this sets random sorting order).

Transition Effects

Different transition effects can be used to switch between images when playing a slide show. The use of transition effects has the following limitations: Use the INI file to set the default transition effect and the default transition effect speed.

Playing Image Series as Movie

The slide show feature can be used to play a series of images in a folder or given by a text file as a movie:

Processing Images

JPEGView provides some basic image processing. Most image processing is done interactively on the fullscreen image what allows to see the effect of the processing immediately. The processed image can be stored either by storing the applied parameters in the parameter DB (the image remains untouched), by copying the processed image to the clipboard to further process it with an external program or by saving the processed image to a JPEG file.
The following image processing commands are supported: Most image processing can be done interactively with the mouse on the processing panel that appears when the mouse cursor is moved to the bottom of the screen.
Default settings for most of the image processing parameters can be given in the INI file.
Image Processing Tips

Keeping Parameters Between Images

By default, all image processing parameters (including zoom and pan) are reset to the default values given in the INI file when the next image is displayed. Using the F4 key, the behavior can be changed to keeping the parameters between images. Pressing F4 again will toggle back to not-keeping the parameters.
Note: While keeping parameters mode is active, the parameter DB cannot be used. Parameter DB values are ignored while this mode is active.

Comparing Processed Image with Original Image

When JPEGView displays a new image, it creates a second set of image processing parameters and initializes it with zero, meaning that the original, unprocessed image will be displayed when this set is applied. Ctrl-A toggles between the two sets - allowing to compare the processed image with the original image. Note that it is possible to change both sets of parameters - however the second set will always be reset to zero when a new image is displayed.

Saving and Renaming Images

Saving Images

Processed images can be saved as JPEG, BMP, PNG or TIFF files using the 'Save image' (Ctrl-S) command. The image is saved in its original size: Performed rotations are taken into account, zoom and pan are not. To save an image in screen size, use the Ctrl-Shift-S keyboard shortcut.
Note: The quality of the saved JPEG file can be set in the INI file.
JPEGView will automatically create a parameter DB entry for the saved image having all image processing disabled. This prevents that JPEGView will double-apply automatic image improvements next time the image is displayed.
Note: When saving images, JPEGView will prompt for a new file name. If you want that Ctrl-S just overrides the original file without showing a dialog, use the INI file setting OverrideOriginalFileWithoutSaveDialog=true.
Use this setting with care, be aware of the risk!
EXIF information
EXIF information is copied to the target JPEG image if it was present in the source JPEG image. An embedded thumbnail image is updated - rotation and image processing is applied to the thumbnail image.

Renaming Images

On the processing panel, images can be renamed by clicking on the file name with the mouse. To confirm the new name, press Enter or click outside of the edit control. To cancel renaming, press Esc. Note that renaming images is not possible when a slide show file is loaded because this would invalidate the slide show file.

Batch Rename/Copy

Using the context menu entry 'Batch rename/copy' a series of files from the current folder can be renamed and/or copied to another folder:
  1. First select the files to be renamed. Use the Ctrl and Shift keys to select multiple files and click the checkboxes.
  2. Enter the target file name pattern. When not using a backslash in the pattern, the files are renamed in the current folder, else they are copied to the target folder as given. Target folders not yet existing are created as needed.
    Several placeholders are supported. See some examples below. A template pattern can be saved when needed.
  3. Before really renaming the files, always verify the new names by pressing the 'Preview' button.
  4. To rename the selected files, press the 'Rename' button. Renaming/copying can take a while, especially when the source or target is a slow USB device.
Examples

%pictures%\Digicam\%2y-%m-%M\%f
Source image: IMG00244.JPG, created June 12, 2007
Target: 'My pictures'\Digicam\07-06-June\IMG00244.JPG
The folder 'Digicam\07-06-June\' is created when needed.

%pictures%\Digicam\%M %y\Trip to Barcelona %x.%e
Source image: IMG00244.JPG, created June 12, 2007
Target: 'My pictures'\Digicam\June 2007\Trip to Barcelona 1.JPG

Copying Images to the Clipboard

Copy screen
Keyboard: Ctrl-C
Copies the image (respectively the visible image section) as displayed on the screen to the clipboard. This is similar to the PrtSc function, however text overlays and areas outside of the image are not included.
Copy processed image in its original size
Keyboard: Ctrl-X
Copies the processed image in its original size to the clipboard. Rotation is taken into account, zoom and pan is not. This command is useful when the corrected image shall be processed and saved in an external application.

Pasting Images from the Clipboard

Keyboard: Ctrl-V
Paste image from clipboard and fit to screen.
For pasted images, storing the parameters to the parameter DB is not possible because they have no representation on the file system. However these images can be processed and saved.

Tip: Ctrl-C also enables to paste the current image file to a new location in the Windows Explorer using Ctrl-V.

Printing Images

Keyboard: Ctrl-P
Some aspects of printing can be changed in the INI file: Notice that JPEGView uses the default printer as specified in the Windows printer configuration but allows changing the printer for the time JPEGView is running. To change the default printer permanently, use the Windows printer configuration.

Parameter Database

The currently visible section, rotation and the image processing parameters can be bound to the image by storing them to the parameter DB. If this image is displayed in JPEGView later on, the stored parameters will be loaded and applied automatically. Using the parameter DB has the advantage that the original image remains untouched. The parameter DB entry for an image is found using a hash value of the image file what has the following advantages: For JPEG images, the hash value is created on the compressed pixel data but not on the EXIF and comment blocks. Changing the EXIF data or commenting the JPEG image will not invalidate the parameter DB entry.
The following parameters are stored in the parameter DB: The parameter database is located in 'Users\Username\AppData\roaming\JPEGView\ParamDB.db', respectively in the EXE path when StoreToEXEPath=true is set in the INI file. It uses 40 bytes per stored parameter set and is limitated to 100000 entries.
Note: The parameter DB settings have precedence over any image processing settings in the INI file.

JPEGView.ini File

The INI file of JPEGView allows configuring a lot of parameters of the application. A two level hierarchy of INI files is used. If a setting is found in the user INI file, it has precedence over the same setting in the global INI file. The user INI file can be edited by using the command 'Edit user settings' in the context menu. Note that changes to these files do not take effect until JPEGView is restarted.
Some parameters can be written to the user INI file with the command 'Save parameters to INI' located in the context menu. The values set for the current image are written to the INI file when using this command. Be aware that these values are then used as default values for all images!

Note: No user INI file is used if the key StoreToEXEPath is set to true in the global INI file. All saved setting are directly written to the global INI file in this case.

INI File Settings

The INI file settings are explained in detail in the INI file (Caution: The link is to the global INI) itself. Only an overview on the available settings is given here:
A note on the support for multiple CPU cores (CPUCoresUsed setting):
By default, JPEGView uses all cores of the CPU for processing images. To force JPEGView to use a given number of parallel processing threads, use the CPUCoresUsed setting. Note that no more than 4 cores (and therefore 4 processing threads) are supported. One additional thread is always created to read ahead the next image - this cannot be suppressed by the INI file.

Command Line Parameters

JPEGView supports the following command line parameters:

Keymap - Changing Keyboard and Mouse Shortcuts

The mapping of keys to commands can be changed by editing the keymap file.
Within the keymap file it is also possible to define additional keyboard shortcuts for command that are not mapped by default. The keymap file also allows defining a command that gets executed when pressing one of the mouse buttons. Be aware that by doing so, the default mouse button functionality will be disabled.
When editing this file, make sure you follow the instructions mentioned in the keymap file itself.

Adding Support for Viewing Camera RAW Files to JPEGView

JPEGView has built in support to view the JPEG images embedded in many camera RAW files. These embedded JPEGs often have a smaller resolution than the RAW image itself but can be decoded and displayed very quickly.
Support for viewing the full size camera RAW images is provided indirectly by using the Microsoft Camera Codec pack.
This codec pack is only available for Windows Vista SP2 and Windows 7/8, but not for Windows XP!
To add support for viewing full size camera RAW files: Be warned that decoding the full size RAW images is much, much slower than just decoding the embedded JPEG!

Calling External Programs or Batch Files

In the INI file, user commands can be defined. User command can call any external program or batch file and can be integrated into JPEGView using: Refer to the INI file itself for a full description of the format and the features.
JPEGView itself uses this mechanism to implement the following commands: Other commands can be added as needed, e.g. moving an image to a specific folder.

Opening Images with External Applications

JPEGView supports opening the currently displayed image in an external application (e.g. GIMP) if the application supports passing a file name on the command line (as most applications do).
To define external applications, use the 'Settings/Admin' - 'Manage 'Open with' menu' dialog. The defined applications are visible in the 'Open with' submenu of the JPEGView context menu. Binding an application to a keyboard shortcut is also possible.

Troubleshooting

JPEGView crashes when displaying an image
Maybe the CPU detection failed. Try to set the CPU type manually in the INI File (key 'CPUType'). Set this key to 'Generic' - this is slower but should run on all CPUs.

The file type .JPG can not be assigned to JPEGView using the method described in the installation section. JPEGView never appears in the list of programs for JPG files even when it is added with 'Browse'.
Maybe JPEGView was moved to another folder while the file type was already registered to it. In this case Windows loses the connection and this cannot be fixed with the Windows Explorer. Start regedit.exe and check the path in 'HKEY_CLASSES_ROOT\Applications\JPEGView.exe\shell\open\command'. Correct the path if it points to an invalid location.

The language of the user interface is in English instead of 'Portuguese/French/whatever'
Normally JPEGView selects the UI language automatically to match the operating system language. This auto detection may has failed. To force a specific language, set the
Language=language_code
setting in the INI file to the desired language code. The supported codes are listed in the INI file.

The colors of images do not look the same compared to other viewers and to the Internet browser
By default, JPEGView is not interpreting embedded color profiles in JPEG and TIFF images. You can force using these color profiles by setting the following key to true in the INI file:
UseEmbeddedColorProfiles=true
Be aware the this slows down loading of JPEG images considerably (also when no color profile is embedded) because it forces JPEGView to read the JPEG image with GDI+ instead of using the optimized TJPEG library.

The image set as desktop wallpaper does not span all screens.
In Windows 7 / 8 and later a desktop wallpaper image can span multiple screens. To create such a wallpaper, switch to fullscreen mode (F11 key) and expand JPEGView to span all screens (F12 key). Then zoom in the image so that no black borders are visible on any side of the screen and pan the image as desired. Finally select 'Set as desktop wallpaper' > 'Use processed image as displayed'.

License & Copyright

Copyright © 2006-2017 David Kleiner

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. The full text of the GPL can be found here.
JPEGView is hosted by SourceForge. You can check for a new version, get the source code or report a bug using the following URL:
https://sourceforge.net/projects/jpegview/

JPEGView contains the following binary libraries:
- Turbo JPEG, Copyright (C)2009-2011 D. R. Commander. All Rights Reserved.
Turbo JPEG is based on libjpeg, © 1994-2010, Independent JPEG Group.
- WebP codec provided by Google https://developers.google.com/speed/webp, © Google Inc.

JPEGView includes or uses the following source code libraries:
- Windows Template Library 8.1, Copyright © 2006 Microsoft Corporation
- dcraw, © 1997-2011 by Dave Coffin

Developed and compiled with Visual Studio 2010/2013 Professional

Thanks to: