## 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:

- Supported image formats
  - JPEG (including EXIF)
  - BMP (Windows Bitmap)
  - WEBP
  - JPEG XR (Windows XP: WIC must be installed)
  - PNG
  - GIF (including animated GIFs)
  - TIFF
  - TGA
  - Camera RAW (embedded JPEGs, see here for details)
- Fullscreen viewing
  - Image centric - nothing else visible by default
  - Multiple monitor support
  - Window mode also supported (Toggle with Ctrl-W)
- Small and fast
  - Executable is only 1 MB
  - C++/MMX/SSE/AVX2 code
  - 32 bit and 64 bit versions
  - Support for multiple CPU cores to speedup processing
  - Minimal dependencies on external libraries
- High quality resizing of images
  - Downsampling filter preserves sharpness
  - Bicubic interpolation for upsampling
- Interactive image processing and improvement
  - Real time and full screen image processing
  - Contrast, Brightness and Saturation adaptation
  - Unsharp masking
  - Cyan-Red, Magenta-Green, Yellow-Blue color balance
  - Local brightness correction to lighten shadows and darken highlights
  - Automatic color and contrast correction
  - Rotation in 90 deg steps
  - Free image rotation for horizon correction
  - Perspective correction
  - Lossless JPEG transformations
  - Crop image (supporting lossless crop for JPEGs)
  - Landscape picture improvement mode
- Viewing and image processing parameters can be saved per image
  - Image file remains untouched
  - Database entries remain valid when image file is moved or renamed
- Slide shows and movie playing
  - Plays slide shows given by text file
  - Multiple transition effects for slide shows
  - Plays all images in folder as movie with configurable frame rate.
    All image processing remains functional while playing.
- Batch rename and copy
  - Copies and renames files from digicam to target folders
  - Creates target folders as needed
  - Supports various placeholders for renaming files
- Extensible and highly configurable
  - Allows defining user commands
  - Allows opening images with external applications
  - Allows changing all keyboard shortcuts
  - Plenty of configurable items in the INI file

## 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:

- Open the context menu of JPEGView (right mouse click)
- On the context menu, choose 'Settings/Administration' - 'Set as default viewer'
- Windows XP - Windows 8.1:

- On the dialog that is appearing, the file extensions of the supported image file formats are listed, together with the information if the corresponding extension is currently bound to JPEGView.
- Select the file extensions to be opened by JPEGView and confirm with OK

- Windows 10 insists on using the 'Standard-apps' dialog of the operating system to change the standard application for images.
  Thus you need to go to the 'Standard-Apps' settings page of Windows 10:

- Open the Windows 10 start menu and type 'standard apps'. Click the found settings page.
- On the right panel, scroll to the end and select 'Set defaults by app'
- In the dialog that is appearing, choose JPEGView in the list on the left panel
- Now you can assign all or a subset of the image file types to JPEGView

Hardware Requirements

- 256 MB RAM
  512 MB RAM is required if images with more than 10 MegaPixels are viewed, less than 256 MB is acceptable if only small images (less than 5 MegaPixels) are viewed.
- CPU should be SSE2 capable (perfect is a CPU with 128 bit SSE2 processing and multiple CPU cores)
  Other CPUs also work but performance decreases somewhat
- A mouse with a scroll wheel (for zooming) and navigation buttons on the side is highly recommended
- If you are using JPEGView on a touch-screen: You may increase the size of the buttons on the navigation panel by increasing the value of 'ScaleFactorNavPanel' in the INI file.

Supported Operating Systems

- Windows 10 / 8.1 / 8
- Windows 7
- Windows Vista
- Windows XP (SP2 required)
- Windows 2000 : Not supported anymore, use version 1.0.21

Supported Languages

- Basque
- Belorussian
- Chinese
- Czech
- English
- French
- German
- Greek
- Italian
- Japanese
- Korean
- Polish
- Portuguese
- Romanian
- Russian
- Spanish
- Swedish
- Ukrainian

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 sylikc@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:

- `F1` displays help on JPEGView
- `F2` displays information about the current image
- `PgDn/PgUp` navigates to next/previous image (Alternative: 'forward' and 'back' mouse buttons)
- Mouse wheel zooms in and out
- Dragging mouse while left mouse button is pressed will pan the image
- Move mouse pointer to bottom of screen for image processing, parameter DB access and file renaming
- Move mouse pointer to top of screen for minimizing or closing the application
- Right mouse button displays the context menu
- `ESC` terminates the application

### 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:

- Next image
  Keyboard: `PgDn or 'Left arrow'`
  Mouse: 'Forward' mouse button (normally on left side of mouse)
- Previous image
  Keyboard: `PgUp or 'Right arrow'`
  Mouse: 'Back' mouse button
- First image in folder (according to sort order, see below)
  Keyboard: `Home`
- Last image in folder (according to sort order, see below)
  Keyboard: `End`
- Mark image for toggling
  Keyboard: `Ctrl-M`
- Toggle between current image and marked image
  Note that toggling only works between images in the same folder
  Keyboard: `Ctrl-Left arrow` or `Ctrl-Right arrow`
- Reload image
  Keyboard: `Ctrl-R`
- Open image or folder
  Keyboard: `Ctrl-O`
  The standard 'File Open' dialog is shown and allows displaying images from other folders. Alternatively, a text file containing file names for a slide show can be opened.
- Drag and drop image or folder from Windows Explorer to JPEGView window.

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:

- `F7`: (Default) Display all files in current folder, wrap around to first image when finished
  The file name of the current file and it's position in the folder can be displayed using `Ctrl-F2`.
- `F8`: Display all files in current folder, when finished recursively display images in subfolders.
  Subfolders in the same root directory are traversed in alphabetic order.
- `F9`: Display all files in current folder, when finished advance to next sibling folder (folder on same level as current folder)

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

- `m`: (Default) Order files according to date/time of last modification
- `c`: Order files according to date/time of creation
- `n`: Order files according to file name
- `z`: Random file order

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:

- Fit image to screen
  Keyboard: `Enter` Mouse: Double click on the image
- Fill screen with crop (no black borders)
  Keyboard: `Ctrl-Enter`
- Zoom to 100 % (One image pixel corresponds to one screen pixel)
  Keyboard: `Space`
  Toggles back to 'Fit to screen' when zoom is already 100 %
  Note that the point under the mouse cursor remains fixed during zoom - allows zooming to point of interest
- Enlarge view to span all monitors (only available on multi monitor systems)
  Keyboard: `F12`
  Panoramas look great in this mode if you have multiple screen.
  Pressing `F12` again toggles back to normal one-screen mode.
- Free Zoom
  Keyboard: `'Plus' or Ctrl-'Arrow up'` to zoom in, `'Minus' or Ctrl-'Arrow down'` to zoom out
  Mouse: Mouse wheel or `Shift-`left mouse click and drag mouse to the left and right
- Pan
  Keyboard: `Shift+'Arrows'`
  Mouse: Left mouse and drag
  Pan is only supported when the image is larger than the screen

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:

- Fit to screen (no zoom)
  Images that are larger than the screen are scaled down to fit. No image areas are cropped but black borders will be visible when the image aspect ratio and the screen aspect ratio do not match. Images that are smaller than the screen are not enlarged.
- Fill with crop (no zoom)
  Images that are larger than the screen are scaled down to fill the entire screen. Cropping occurs if necessary to avoid black borders. Images that are smaller than the screen are not enlarged.
  This mode is suited for viewing 4:3 images on a 16:9 wide screen without black borders.
  Note: Cropping is limited to approximately 30 % of the image in this mode. If more would be cropped, fit to screen is used instead. As a result, portrait images will not be cropped on the screen.
- Fit to screen
  Images are scaled (up or down) to fit the screen. No image areas are cropped but black borders can be visible.
- Fill with crop
  Images are scaled (up or down) to fill the entire screen. Unlimited cropping may occurs if necessary to avoid black borders.

#### 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:

- Crop image selection
  Crops the image selection and re-applies all image processing with the current parameters to the cropped image. When the color and contrast correction is active, the cropped image may looks different afterwards. Note that a crop operation cannot be stored to the parameter DB.
- Lossless crop (for JPEG images only)
  Crops the image selection without recompression of the JPEG image. The cropped image must be stored as a new JPEG file. Note that lossless crop cannot be more exact than to 8 or 16 pixel boundaries due to the structure of JPEG images.
- Copy image selection to clipboard
  Note that this command will copy the image selection in original resolution and not in screen resolution.
- Crop Mode
  Sets the crop mode - either to free croping, fixed size cropping or cropping with a fixed aspect ratio. Note that the default fixed crop size can be set in the INI file.
- Zoom to selection

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:

- Rotation in steps of 90 degrees
- Mirror horizontally and vertically
- Crop

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:

- ANSI coded text file
- Unicode (UTF16) text file
- UTF8 coded text file

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:

- `PgDn/PgUp/Home/End` : Navigates to next/previous/first/last image of slide show
- `1 .. 9` : Starts the slide show with a delay of n seconds between the images
- `Ctrl + [Shift] + 1 .. 9` : Uses a delay of n/10 of a second, respectively n/100 of a second
- `Esc` : Stops the 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:

- Transition effects are only available in full screen mode
- When playing a slide show with transition effects, reaction on commands may be somewhat slow. The ESC key always immediatly terminates the slide show.

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:

- First set the display order for the files. The order is either given by a text file or by choosing the display order mode for folders accordingly.
- Press the `Home` key to go to the first frame of the movie.
- Start the movie using the context menu 'Play folder as movie' or the `Ctrl+[Shift]+Number` keys. Of course the number of frames per seconds is limited by the computing power available to decode and process the frames. JPEGView will never skip frames - if more frames are requested than possible, the frames are displayed as fast as possible. During movie playing, high quality resampling, contrast correction and local brightness correction are disabled to speed up processing.
- Keeping parameters between the frames is enabled during movie playing - corrections apply to the whole movie.
- To stop the movie, press the `Esc` key.

### 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:

- Contrast
  Keyboard: `Ctrl - +/-`
  Mouse: Use processing panel
  Increases or decreases the global contrast of the image. Technically, the steepness of an S-curve is changed by this parameter.
  This value can be stored in the parameter DB.
- Brightness
  Keyboard: `Shift - +/-`
  Mouse: Use processing panel
  Increases or decreases the global brightness of the image. Technically, a exponent of a gamma curve is changed by this parameter.
  This value can be stored in the parameter DB.
- Saturation
  Keyboard: `none`
  Mouse: Use processing panel
  Increases or decreases the color saturation of the image.
  This value can be stored in the parameter DB.
- Downsampling Sharpness
  Keyboard: `Alt - +/-`
  Mouse: Use processing panel. Note that this slider is only visible when the window/screen is large enough.
  Increases or decreases sharpness of the image. If the default sharpening filter is used, sharpness only applies to images that are downsampled but not for images displayed with 100% zoom. The filter to be used can be set in the INI file.
  This value can be stored in the parameter DB.
- Unsharp Mask
  Keyboard: `none`
  Mouse: Use processing panel, 'Unsharp Mask' button.
  Unsharp masking is an adaptive sharpening filter that creates a smoothed version of the original image (thus the name 'unsharp'). The filter then adds the difference of the original image and the smoothed image to the original image:
  Sharpened Image = Original Image + Amount * ( Original Image - Smoothed Image)
  The 'Radius' parameter sets the radius of the smoothing kernel, the 'Amount' parameter sets the amount of sharpening and the 'Threshold' value sets the miminal difference of original and smoothed image to apply the filter to a pixel.
  Note that unsharp masking is previewed always in 100 % zoom.
  This value cannnot be stored in the parameter DB. The image must be saved ('Save image' in context menu) to retain the processing.
- Free Rotate
  Keyboard: `none`
  Mouse: Use navigation panel, 'Free Rotate' button.
  In preview mode the image can be rotated with the mouse in real time, but with low quality. Grid lines help performing horizon correction. Alternatively, horizon correction can be done by drawing a line along the horizon or along a vertical structure. The rotation angle will be calculated so that this line is exactly horizontal, respecitively vertical. Activate this mode with the right most tool button on the panel.
  Press the 'Apply' button to apply the rotation to the original image with high quality (bicubic interpolation). By default the rotated image is cropped automatically to avoid black borders. This behavior can be changed with the middle tool button on the rotation panel.
  This value can be stored in the parameter DB.
- Perspective Correction
  Keyboard: `none`
  Mouse: Use navigation panel, 'Perspective Correction' button.
  When a picture of a building is taken from ground level, the vertical edges of the building are usually tilted because the camera is not aligned horizontally when taking the picture. Perspective correction can be used to correct for this effect - at least partially.
  In preview mode the image can be tilted with the mouse in real time, but with low quality. Grid lines help during the process.
  Press the 'Apply' button to apply the correction to the original image with high quality (bicubic interpolation). By default the corrected image is cropped automatically to avoid black borders. This behavior can be changed with the right tool button on the panel.
  This value cannnot be stored in the parameter DB. The image must be saved ('Save image' in context menu) to retain the processing.
- Change Size
  Keyboard: `none`
  Mouse: Use context menu, 'Transform image > Change size...' menu item.
  This will resize the image to the specified new size using one of the selectable filters. The 'Box' filter is just repeating pixels (upsampling), respectively deleting pixels (downsampling). The other filters are higher order reconstruction filters that balance between no aliasing and improved sharpness.
  This value cannnot be stored in the parameter DB. The image must be saved ('Save image' in context menu) to retain the processing.
- Color balance
  Mouse: Use processing panel
  Changes the color balance of the image by changing the cyan-red, magenta-green and yellow-blue color balance.
  This value can be stored in the parameter DB.
- Local brightness
  Keyboard: `F6`
  Mouse: Use processing panel
  Toggle local brightness correction. Local brightness correction lightens shadows and darkens highlights by applying a smoothed additive/subtractive mask to the image. It can be used to correct images with hard contrasts and uncovers details in dark shadows or in overexposed areas.
  This value can be stored in the parameter DB.
- Color and contrast correction
  Keyboard: `F5`
  Mouse: Use processing panel
  Toggle color and contrast correction. Color correction tries to reduce global color casts. Contrast correction enhances contrast by moving the black point of the image (darkest area) towards black and the white point (brightest area) towards white. The color and contrast correction algorithm can be configured in the INI file.
  This value can be stored in the parameter DB.
- Landscape picture enhancement mode
  Keyboard: `Ctrl-L`
  Mouse: Use navigation panel
  Toggle landscape picture enhancement mode. The landscape picture mode is simply a special parameter set optimized for landscapes pictures. It will brighten shadows, darken highlights and enhance contrast when needed. The parameter set used in landscape mode can be configured in the INI file (setting "LandscapeModeParams").
  This value can be stored in the parameter DB.

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

- Clicking on the number on the right of the sliders will temporarily reset the value to the default value. The value remains reset until the mouse button is released.
- Double clicking above a slider will permanently reset its value to the default value.

#### 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:

- Default margins
  Setting: `PrintMargin`
  Sets the default print margin (all sides) in centimeters. Notice that you cannot set this value below the physical margins as specified by the printer driver.
- Default width of printed image
  Setting: `PrintWidth`
  Sets the default print width in centimeters. Use negative numbers to set the 'Fit to paper' printing mode.
- Units in print dialog
  Setting: `Units`
  Sets the units (cm, inches) used in the print dialog. By default the units as specified by the operating system are used. Set to 'metric' or 'english' to force using centimeters, respectively inches.

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.

- Add image to the parameter DB
  Keyboard: `S`
  Mouse: Use processing panel
- Remove image from the parameter DB
  Keyboard: `D`
  Mouse: Use processing panel
- Backup parameter DB
  Use this command in the context menu to backup the parameter DB to another folder or disk.
- Restore parameter DB
  Use this command in the context menu to restore the parameter DB from a backuped version. Note that when restoring the parameter DB, the selected DB is merged with the current DB - so this command can also be used to merge two parameter DBs. In case of conflicting entries in the merge, the system asks which entries shall have priority.

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:

- Moving the image to a different folder or renaming the image does not break the link
- Two copies of the same image have the same parameter DB entry

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:

- Visible section of image
  The visible section is stored resolution independent - the same section will be displayed on a monitor with a higher resolution (but the zoom factor will be different then).
- Rotation of image
- Contrast value
- Brightness value
- Saturation value
- Sharpness value (but no Unsharp Mask)
- Color balance values
- Local brighness correction on/off
- Lighten shadows value
- Darken highlights value
- Deep shadows value
- Color and contrast correction on/off
- Color correction amount
- Contrast correction amount
- High quality resizing on/off

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.

- User INI file
  'Users\Username\AppData\roaming\JPEGView\JPEGView.ini' (path name depends on Windows version)
- Global INI file
  'Path of JPEGView.exe\JPEGView.ini'

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.

- Default contrast
- Default brightness
- Default saturation
- Default sharpness
- Default color balance
- Local brighness correction on/off by default
- Color and contrast correction on/off by default
- Default sorting order
- Default auto zoom mode
- Navigation panel on/off

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:

- Default image processing parameters: Contrast, brightness, sharpness, color balance
- Default background color
- Show file name by default
- Show file info by default
- Show navigation panel by default
- Blending factor for navigation panel
- Keep parameters by default
- Force CPU type (if autodetection fails)
- Force number of CPU cores to be used
- Used filter kernel for downsampling images
- Default sorting order
- Default navigation mode
- Default auto zoom mode
- Quality (and file size) of saved JPEG images
- Monitor to use (for multi monitor systems)
- Color and contrast correction settings
- Folders to explicitely include/exclude from auto color and contrast correction
- Local brighness correction settings
- Folders to explicitely include/exclude from local brightness correction
- Parameters used in landscape enhancement mode
- Definition of user commands

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:

- `filename`
  File name of the file to load or folder to show. If this is a file name, it must be a valid image file name or a file name of a text file that contains a list of files to display, listing one file name per line. If it is a folder name, JPEGView displays the image files in this folder.
  The file name must be specified before all other parameters in the command line.
  Note: No slide show is started automatically. Use the /slideshow parameter for that.
- `/slideshow [time in seconds]`
  Automatically starts a slide show after startup. Example:
  `jpegview.exe myfilelist.txt /slideshow 3`
  Starts a slideshow of the files listed in "myfilelist.txt" with an interval of 3 seconds between the images.
- `/effect [effect]`
  Sets the transition effect for full screen slideshows. The parameter has no effect if not used in fullscreen mode.
  Possible effects are: None, Blend, SlideLR, SlideRL, SlideTB, SlideBT, RollLR, RollRL, RollTB, RollBT, ScrollLR, ScrollRL, ScrollTB, ScrollBT
  Example:
  `jpegview.exe myfilelist.txt /slideshow 3 /effect blend /fullscreen`
- `/transitiontime [time in milliseconds]`
  Sets the transition time for the effect in full screen slideshows. Example:
  `jpegview.exe myfilelist.txt /slideshow 3 /effect blend /transitiontime 250 /fullscreen`
- `/monitor [monitor index]`
  Sets the monitor to display JPEGView, overriding the INI file setting. 0 stands for the primary monitor, any number bigger than 0 for the secondary monitor with the corresponding index. Example:
  `jpegview.exe "d:\pictures\jan 2013\" /slideshow 3 /fullscreen /monitor 1`
- `/autoexit`
  Terminates JPEGView automatically after having finished the slide show if combined with the /slideshow parameter.
  Setting this parameter also changes the behavior of the ESC key: JPEGView terminates immediately when pressing the ESC key, also while playing a slideshow or an animated GIF.
  Note that WrapAroundFolder must be set to false in the INI file - otherwise the slideshow does not finish when the end of the folder is reached.
- `/fullscreen`
  Starts JPEGView in full screen mode, ignoring the INI file setting that is currently active.
- `/order [mode]`
  Forces file ordering mode 'mode', ignoring the INI file setting that is currently active.
  [mode] can be M, C, N or Z, for the file ordering modes 'M: modification date', 'C: creation date', 'N: file name', 'Z: random'
  Example: `jpegview.exe c:\pictures /slideshow 2 /order z /fullscreen`
  Shows a slideshow of the files in the folder "c:\pictures" using random ordering and an interval of 2 seconds, forcing full screen mode for the slide show.
- `/ini [ini file title]`
  Uses the INI file as specified. The file extension can be omitted, ".ini" is added when it is missing. The file name must neither contain an absolute nor a relative path, nor space characters.
  When the specified INI file contains the key StoreToEXEPath=true, it must be located in the EXE path and it must exist. Otherwise, the INI file will be created in the user INI path (%appdata%/roaming/JPEGView/) when it does not exist and when it is used the first time.
  Example: `jpegview.exe /ini AlternativeConfig`
  Uses an INI file named "AlternativeConfig.ini" in %appdata%/roaming/JPEGView/

## 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:

- Download and install the Microsoft Camera Codec pack.
  Check if your camera model is supported by the codec pack.
- Add the extension(s) of the camera RAW files to be read by JPEGView to the user INI file, setting 'FilesProcessedByWIC'.
  Context menu: Settings/Admin > Edit user settings...
  Example for adding the extension "cr2", used by Canon cameras:
  `FilesProcessedByWIC=*.wdp;*.mdp;*.hdp;*.cr2`
- Save the INI file and restart JPEGView.

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:

- Binding to a keyboard shortcut.
- Binding to a menu item in the 'User Commands' submenu of the JPEGView context menu.

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:

- `Shift-Del` : Delete the current image file permanently - calls the command processor (cmd.exe) to delete the file.

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 GitHub. You can check for a new version, get the source code or report a bug using the following URL:
https://github.com/sylikc/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:

- Armel for testing, bug reporting and suggestions for improvements since the very first versions
- Michi, Patrik and Michael for additional testing and ideas
- Anonymous for integration of dcraw, for viewing JPEGs embedded in camera RAW
- Franco Bianconi, Daniel Sánchez Vargas and Enrique Pineiro for the Spanish translation
- winPenPack Team and Massimo Pietrolonardo for the Italian translation
- Adil Tiadi and Fabrice for the French translation
- Anonymous for the Korean translation
- Silviu Laurentiu for the Romanian translation
- Dmitry Yerokhin for the Russian translation
- Åke Engelbrektson for the Swedish translation
- Carpegieri Torezan for the Portuguese (Brasilian) translation
- Milos Koutny for the Czech translation
- Paris Setos for the Greek translation
- Sérgio Marques for the Portuguese translation
- Xabier Aramendi for the Basque translation
- Yia Guo and 风逸兰 for the Chinese translations
- Uladzimir Panada for the Belarusan translation
- Володимир for the Ukrainian translation
- Hiroyuki Matenokoji for the Japanese translation
- Damian for the Polish translation