-
Notifications
You must be signed in to change notification settings - Fork 10
/
readme.html
1317 lines (1257 loc) · 80.4 KB
/
readme.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<!-- Template by html.am -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Readme for JPEGView</title>
<style type="text/css">
body {
margin: 0;
padding: 0;
overflow: hidden;
height: 100%;
max-height: 100%;
font-family: Sans-serif;
line-height: 1.5em;
}
code {
font-family: Consolas, "Lucida Console", monospace;
font-size: 100%;
color: green;
}
kbd {
font-family: Consolas, "Lucida Console", monospace;
font-size: 100%;
color: darkred;
background: #F7F7F7;
}
#header {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100px;
overflow: hidden; /* Disables scrollbars on the header frame. To enable scrollbars, change "hidden" to "scroll" */
background: #E0E0F0;
}
#nav {
position: absolute;
top: 100px;
left: 0;
bottom: 0;
width: 340px;
overflow: auto; /* Scrollbars will appear on this frame only when there's enough content to require scrolling. To disable scrollbars, change to "hidden", or use "scroll" to enable permanent scrollbars */
background: #F7F7F7;
}
#logo {
padding-top: 10px;
padding-left: 10px;
}
#revision {
padding-left: 10px;
}
main {
position: fixed;
top: 100px; /* Set this to the height of the header */
left: 340px;
right: 0;
bottom: 0;
overflow: auto;
background: #fff;
}
.innertube {
margin: 15px; /* Provides padding for the content */
}
p {
color: #555;
}
nav ul {
list-style-type: none;
margin: 0;
padding: 0;
}
nav ul a {
color: darkgreen;
text-decoration: none;
}
/*IE6 fix*/
* html body {
padding: 100px 0 0 230px; /* Set the first value to the height of the header and last value to the width of the nav */
}
* html main {
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<header id="header">
<div id="logo">
<h1>Readme for JPEGView</h1>
</div>
<div id="revision">
Revision: 2022-Jul-11
</div>
</header>
<main>
<div class="innertube">
<a name="Introduction"></a>
<h2>Introduction</h2>
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.<br />
<b>Features:</b>
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Supported image formats
<ul style="margin-top:0in;margin-bottom:0in">
<li>JPEG (including EXIF)</li>
<li>BMP (Windows Bitmap)</li>
<li>WEBP</li>
<li>
JPEG XR (Windows XP: <a href="http://www.microsoft.com/download/en/details.aspx?id=32">WIC</a> must be installed)
</li>
<li>PNG</li>
<li>GIF (including animated GIFs)</li>
<li>TIFF</li>
<li>TGA</li>
<li>
Camera RAW (embedded JPEGs, see <a href="#RAWFiles">here for details</a>)<br />
</li>
</ul>
</li>
<li>
Fullscreen viewing
<ul style="margin-top:0in;margin-bottom:0in">
<li>Image centric - nothing else visible by default</li>
<li>Multiple monitor support</li>
<li>Window mode also supported (Toggle with Ctrl-W)</li>
</ul>
</li>
<li>
Small and fast
<ul style="margin-top:0in;margin-bottom:0in">
<li>Executable is only 1 MB</li>
<li>C++/MMX/SSE/AVX2 code</li>
<li>32 bit and 64 bit versions</li>
<li>Support for multiple CPU cores to speedup processing</li>
<li>Minimal dependencies on external libraries</li>
</ul>
</li>
<li>
High quality resizing of images
<ul style="margin-top:0in;margin-bottom:0in">
<li>Downsampling filter preserves sharpness</li>
<li>Bicubic interpolation for upsampling</li>
</ul>
</li>
<li>
Interactive image processing and improvement
<ul style="margin-top:0in;margin-bottom:0in">
<li>Real time and full screen image processing</li>
<li>Contrast, Brightness and Saturation adaptation</li>
<li>Unsharp masking</li>
<li>Cyan-Red, Magenta-Green, Yellow-Blue color balance</li>
<li>Local brightness correction to lighten shadows and darken highlights</li>
<li>Automatic color and contrast correction</li>
<li>Rotation in 90 deg steps</li>
<li>Free image rotation for horizon correction</li>
<li>Perspective correction</li>
<li>Lossless JPEG transformations</li>
<li>Crop image (supporting lossless crop for JPEGs)</li>
<li>Landscape picture improvement mode</li>
</ul>
</li>
<li>
Viewing and image processing parameters can be saved per image
<ul style="margin-top:0in;margin-bottom:0in">
<li>Image file remains untouched</li>
<li>Database entries remain valid when image file is moved or renamed</li>
</ul>
</li>
<li>
Slide shows and movie playing
<ul style="margin-top:0in;margin-bottom:0in">
<li>Plays slide shows given by text file</li>
<li>Multiple transition effects for slide shows</li>
<li>
Plays all images in folder as movie with configurable frame rate.<br />
All image processing remains functional while playing.
</li>
</ul>
</li>
<li>
Batch rename and copy
<ul style="margin-top:0in;margin-bottom:0in">
<li>Copies and renames files from digicam to target folders</li>
<li>Creates target folders as needed</li>
<li>Supports various placeholders for renaming files</li>
</ul>
</li>
<li>
Extensible and highly configurable
<ul style="margin-top:0in;margin-bottom:0in">
<li>Allows defining <a href="#External">user commands</a></li>
<li>Allows opening images with <a href="#OpenWith">external applications</a></li>
<li>Allows changing all <a href="#KeyMap">keyboard shortcuts</a></li>
<li>Plenty of configurable items in the INI file</li>
</ul>
</li>
</ul>
<h2><a name="Installation"></a>Installation</h2>
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\).<br />
To define JPEGView as your default viewer for image files, perform the following steps:
<ul style="margin-top:0in;margin-bottom:0in">
<li>Open the context menu of JPEGView (right mouse click)</li>
<li>On the context menu, choose 'Settings/Administration' - 'Set as default viewer'</li>
<li>Windows XP - Windows 8.1:</li>
<ul style="margin-top:0in;margin-bottom:0in">
<li>
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.
</li>
<li>Select the file extensions to be opened by JPEGView and confirm with OK</li>
</ul>
<li>
Windows 10 insists on using the 'Standard-apps' dialog of the operating system to change the standard application for images.<br />
Thus you need to go to the 'Standard-Apps' settings page of Windows 10:
</li>
<ul style="margin-top:0in;margin-bottom:0in">
<li>Open the Windows 10 start menu and type 'standard apps'. Click the found settings page.</li>
<li>On the right panel, scroll to the end and select 'Set defaults by app'</li>
<li>In the dialog that is appearing, choose JPEGView in the list on the left panel</li>
<li>Now you can assign all or a subset of the image file types to JPEGView</li>
</ul>
</ul>
<b>Hardware Requirements</b><br />
<ul style="margin-top:0in;margin-bottom:0in">
<li>
256 MB RAM<br />
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.
</li>
<li>
CPU should be SSE2 capable (perfect is a CPU with 128 bit SSE2 processing and multiple CPU cores)<br />
Other CPUs also work but performance decreases somewhat
</li>
<li>A mouse with a scroll wheel (for zooming) and navigation buttons on the side is highly recommended</li>
<li>
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.
</li>
</ul>
<b>Supported Operating Systems</b><br />
<ul style="margin-top:0in;margin-bottom:0in">
<li>Windows 10 / 8.1 / 8</li>
<li>Windows 7</li>
<li>Windows Vista</li>
<li>Windows XP (SP2 required)</li>
<li>Windows 2000 : Not supported anymore, use version 1.0.21</li>
</ul>
<b>Supported Languages</b><br />
<ul style="margin-top:0in;margin-bottom:0in">
<li>Basque</li>
<li>Belorussian</li>
<li>Chinese</li>
<li>Czech</li>
<li>English</li>
<li>French</li>
<li>German</li>
<li>Greek</li>
<li>Italian</li>
<li>Japanese</li>
<li>Korean</li>
<li>Polish</li>
<li>Portuguese</li>
<li>Romanian</li>
<li>Russian</li>
<li>Spanish</li>
<li>Swedish</li>
<li>Ukrainian</li>
</ul>
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
<a href="./strings_de.txt">strings_de.txt</a> as an example.<br />
If you want that your translation is included into the next JPEGView release, contact me at
<a href="mailto:jpegview@gmail.com">jpegview@gmail.com</a><br />
<b>Registry</b><br />
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.<br />
<b>Created Files during Runtime</b><br />
The only location where files are written (the parameter DB and the user INI file)
is in 'Users\<i>Username</i>\AppData\roaming\JPEGView\'. Notice that the exact path depends on the Windows version. For exceptions of this rule see next section.<br />
Note that these files are only created when they are needed, e.g. when the first parameter set is stored to the parameter DB.<br />
<b>Forcing user data storage in EXE path</b><br />
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.<br />
<b>Restricted Rights</b><br />
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.
<h2><a name="Using"></a>Using JPEGView</h2>
<h3><a name="GettingStarted"></a>Getting Started</h3>
For getting started, the following commands in JPEGView are the most important ones:<br />
<ul style="margin-top:0in;margin-bottom:0in">
<li>
<kbd>F1</kbd> displays help on JPEGView
</li>
<li>
<kbd>F2</kbd> displays information about the current image
</li>
<li>
<kbd>PgDn/PgUp</kbd> navigates to next/previous image (Alternative: 'forward' and 'back' mouse buttons)
</li>
<li>Mouse wheel zooms in and out</li>
<li>Dragging mouse while left mouse button is pressed will pan the image</li>
<li>Move mouse pointer to bottom of screen for image processing, parameter DB access and file renaming</li>
<li>Move mouse pointer to top of screen for minimizing or closing the application</li>
<li>Right mouse button displays the context menu</li>
<li>
<kbd>ESC</kbd> terminates the application
</li>
</ul>
<h3><a name="NavPanel"></a>Navigation Panel</h3>
<img src="Navpanel.png" alt="Navigation panel" border="0" />
<br />
From left to right:<br />
- First image in folder, Previous image, Next image, Last image in folder<br />
- Delete image file (to recycle bin, use Shift+Del to delete image files permanently)<br />
- Zoom mode, when active zooming can be done by pressing the left mouse button and dragging the mouse to the left and right<br />
- Actual image size / Fit image to screen<br />
- Window mode / Full screen mode<br />
- Rotate clockwise, Rotate counter-clockwise<br />
- Rotate image by any angle, e.g. to perform horizon correction<br />
- Perspecive correction, corrects tilted vertical edges<br />
- Keep image processing parameters and zoom/pan between images<br />
- Toggle landscape picture enhancement mode<br />
- Toggle display of image information (EXIF)<br />
<h4>Full Screen Mode / Window Mode</h4>
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 <kbd>F11</kbd> or with
the button on the navigation panel.<br />
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 <kbd>Enter</kbd> key to fit the image to the window.
<h3><a name="Viewing"></a>Viewing Images</h3>
<h4><a name="Navigation"></a>Navigation</h4>
To navigate between images, the following commands are supported:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Next image<br />
Keyboard: <kbd>PgDn or 'Left arrow'</kbd><br />
Mouse: 'Forward' mouse button (normally on left side of mouse)
</li>
<li>
Previous image<br />
Keyboard: <kbd>PgUp or 'Right arrow'</kbd><br />
Mouse: 'Back' mouse button
</li>
<li>
First image in folder (according to sort order, see below)<br />
Keyboard: <kbd>Home</kbd>
</li>
<li>
Last image in folder (according to sort order, see below)<br />
Keyboard: <kbd>End</kbd>
</li>
<li>
Mark image for toggling<br />
Keyboard: <kbd>Ctrl-M</kbd>
</li>
<li>
Toggle between current image and marked image<br />
Note that toggling only works between images in the same folder<br />
Keyboard: <kbd>Ctrl-Left arrow</kbd> or <kbd>Ctrl-Right arrow</kbd>
</li>
<li>
Reload image<br />
Keyboard: <kbd>Ctrl-R</kbd><br />
</li>
<li>
Open image or folder<br />
Keyboard: <kbd>Ctrl-O</kbd><br />
The standard 'File Open' dialog is shown and allows displaying images from other folders.
Alternatively, a text file containing file names for a <a href="#SlideShow">slide show</a> can be opened.
</li>
<li>
Drag and drop image or folder from Windows Explorer to JPEGView window.
</li>
</ul>
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.<br />
JPEGView uses a second thread to read ahead and process the next image. Guessing the next image is based on
the last navigations.<br /><br />
JPEGView supports the following navigation modes:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
<kbd>F7</kbd>: (Default) Display all files in current folder, wrap around to first image when finished<br />
The file name of the current file and it's position in the folder can be displayed using <kbd>Ctrl-F2</kbd>.
</li>
<li>
<kbd>F8</kbd>: Display all files in current folder, when finished recursively display images in subfolders.<br />
Subfolders in the same root directory are traversed in alphabetic order.
</li>
<li>
<kbd>F9</kbd>: Display all files in current folder, when finished advance to next sibling folder
(folder on same level as current folder)
</li>
</ul>
<a name="DisplayOrder"></a>
The default navigation mode can be changed in the <a href="#INIFile">INI file</a>.<br /><br />
The display-order within one folder is also configurable:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
<kbd>m</kbd>: (Default) Order files according to date/time of last modification
</li>
<li>
<kbd>c</kbd>: Order files according to date/time of creation
</li>
<li>
<kbd>n</kbd>: Order files according to file name
</li>
<li>
<kbd>z</kbd>: Random file order
</li>
</ul>
The default ordering can be changed in the <a href="#INIFile">INI file</a>.<br />
<h4><a name="ImageInfo"></a>Image Information</h4>
<h5>Image and EXIF Information</h5>
Use <kbd>F2</kbd> 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.
<h5>File Name and Path</h5>
Use <kbd>Ctrl-F2</kbd> to display the full path and file name of the current image.
<h4><a name="ZoomPan"></a>Zoom and Pan</h4>
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.<br />
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:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Fit image to screen<br />
Keyboard: <kbd>Enter</kbd>
Mouse: Double click on the image
</li>
<li>
Fill screen with crop (no black borders)<br />
Keyboard: <kbd>Ctrl-Enter</kbd>
</li>
<li>
Zoom to 100 % (One image pixel corresponds to one screen pixel)<br />
Keyboard: <kbd>Space</kbd><br />
Toggles back to 'Fit to screen' when zoom is already 100 %<br />
Note that the point under the mouse cursor remains fixed during zoom - allows zooming to point of interest
</li>
<li>
Enlarge view to span all monitors (only available on multi monitor systems)<br />
Keyboard: <kbd>F12</kbd><br />
Panoramas look great in this mode if you have multiple screen.<br />
Pressing <kbd>F12</kbd> again toggles back to normal one-screen mode.
</li>
<li>
Free Zoom<br />
Keyboard: <kbd>'Plus' or Ctrl-'Arrow up'</kbd> to zoom in, <kbd>'Minus' or Ctrl-'Arrow down'</kbd> to zoom out<br />
Mouse: Mouse wheel or <kbd>Shift-</kbd>left mouse click and drag mouse to the left and right<br />
</li>
<li>
Pan<br />
Keyboard: <kbd>Shift+'Arrows'</kbd><br />
Mouse: Left mouse and drag<br />
Pan is only supported when the image is larger than the screen
</li>
</ul>
<br />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 <kbd>F3</kbd> what toggles between point sampling and filter based sampling.
<h4><a name="AutoScaleMode"></a>Auto Scale Mode</h4>
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'.<br />
The following modes are supported:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Fit to screen (no zoom)<br />
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.
</li>
<li>
Fill with crop (no zoom)<br />
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.<br />
This mode is suited for viewing 4:3 images on a 16:9 wide screen without black borders.<br />
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.
</li>
<li>
Fit to screen<br />
Images are scaled (up or down) to fit the screen. No image areas are cropped but black borders can be visible.
</li>
<li>
Fill with crop<br />
Images are scaled (up or down) to fill the entire screen. Unlimited cropping may occurs if necessary to avoid
black borders.
</li>
</ul>
<h4><a name="Rotate"></a>Rotate</h4>
With the <kbd>'Arrow down'</kbd> and <kbd>'Arrow up'</kbd> 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.<br />
To rotate a JPEG image lossless on disk, use the <kbd>R</kbd> and <kbd>T</kbd> keys.
<h4><a name="Crop"></a>Crop</h4>
When the <kbd>Ctrl</kbd> 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:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Crop image selection<br />
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.
</li>
<li>
Lossless crop (for JPEG images only)<br />
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.
</li>
<li>
Copy image selection to clipboard<br />
Note that this command will copy the image selection in original resolution and not in screen resolution.
</li>
<li>
Crop Mode<br />
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.
</li>
<li>Zoom to selection</li>
</ul>
Hint: Use a large zoom factor and the point-sampling mode (F3 key) to crop with pixel precision.<br />
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.
<h3><a name="LosslessJPEG"></a>Lossless JPEG Transformations</h3>
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:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Rotation in steps of 90 degrees
</li>
<li>
Mirror horizontally and vertically
</li>
<li>
Crop
</li>
</ul>
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.
<h3><a name="SlideShow"></a>Slide Shows</h3>
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.
<h4>Slide Show Text File</h4>
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:
<ul style="margin-top:0in;margin-bottom:0in">
<li>ANSI coded text file</li>
<li>Unicode (UTF16) text file</li>
<li>UTF8 coded text file</li>
</ul>
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.<br />
The following examples show possible line formats:<br />
<code>
d:\Images\test.jpg<br />
test.jpg<br />
"d:\My Documents\test.jpg"<br />
<image>d:\My Documents\test2.jpg</image><br />
</code>
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.<br />
A slide show file list is a sort of virtual folder containing all images listed in the slide show file.
<h4><a name="Slideshows"></a>Using Slide Shows</h4>
The following commands can be used to control a slide show:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
<kbd>PgDn/PgUp/Home/End</kbd> : Navigates to next/previous/first/last image of slide show
</li>
<li>
<kbd>1 .. 9</kbd> : Starts the slide show with a delay of n seconds between the images
</li>
<li>
<kbd>Ctrl + [Shift] + 1 .. 9</kbd> : Uses a delay of n/10 of a second, respectively n/100 of a second
</li>
<li>
<kbd>Esc</kbd> : Stops the slide show
</li>
</ul>
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).
<h4>Transition Effects</h4>
Different transition effects can be used to switch between images when playing a slide show.
The use of transition effects has the following limitations:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Transition effects are only available in full screen mode
</li>
<li>
When playing a slide show with transition effects, reaction on commands may be somewhat slow.
The ESC key always immediatly terminates the slide show.
</li>
</ul>
Use the INI file to set the default transition effect and the default transition effect speed.
<h4><a name="Movies"></a>Playing Image Series as Movie</h4>
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:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
First set the display order for the files. The order is either given by a text file or by choosing the
<a href="#DisplayOrder">display order mode</a> for folders accordingly.
</li>
<li>
Press the <kbd>Home</kbd> key to go to the first frame of the movie.
</li>
<li>
Start the movie using the context menu 'Play folder as movie' or the <kbd>Ctrl+[Shift]+Number</kbd> 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.
</li>
<li>Keeping parameters between the frames is enabled during movie playing - corrections apply to the whole movie.</li>
<li>
To stop the movie, press the <kbd>Esc</kbd> key.
</li>
</ul>
<h3><a name="Processing"></a>Processing Images</h3>
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.<br />
The following image processing commands are supported:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
<b>Contrast</b><br />
Keyboard: <kbd>Ctrl - +/-</kbd><br />
Mouse: Use processing panel<br />
Increases or decreases the global contrast of the image. Technically, the steepness
of an S-curve is changed by this parameter.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Brightness</b><br />
Keyboard: <kbd>Shift - +/-</kbd><br />
Mouse: Use processing panel<br />
Increases or decreases the global brightness of the image. Technically, a exponent of
a gamma curve is changed by this parameter.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Saturation</b><br />
Keyboard: <kbd>none</kbd><br />
Mouse: Use processing panel<br />
Increases or decreases the color saturation of the image.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Downsampling Sharpness</b><br />
Keyboard: <kbd>Alt - +/-</kbd><br />
Mouse: Use processing panel. Note that this slider is only visible when the window/screen is large enough.<br />
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.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Unsharp Mask</b><br />
Keyboard: <kbd>none</kbd><br />
Mouse: Use processing panel, 'Unsharp Mask' button.<br />
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:<br />
Sharpened Image = Original Image + Amount * ( Original Image - Smoothed Image)<br />
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.<br />
Note that unsharp masking is previewed always in 100 % zoom.<br />
This value cannnot be stored in the parameter DB. The image must be saved ('Save image' in context menu) to retain the processing.
</li>
<li>
<b>Free Rotate</b><br />
Keyboard: <kbd>none</kbd><br />
Mouse: Use navigation panel, 'Free Rotate' button.<br />
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.<br />
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.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Perspective Correction</b><br />
Keyboard: <kbd>none</kbd><br />
Mouse: Use navigation panel, 'Perspective Correction' button.<br />
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.<br />
In preview mode the image can be tilted with the mouse in real time, but with low quality. Grid lines help during the process.<br />
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.<br />
This value cannnot be stored in the parameter DB. The image must be saved ('Save image' in context menu) to retain the processing.
</li>
<li>
<b>Change Size</b><br />
Keyboard: <kbd>none</kbd><br />
Mouse: Use context menu, 'Transform image > Change size...' menu item.<br />
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.<br />
This value cannnot be stored in the parameter DB. The image must be saved ('Save image' in context menu) to retain the processing.
</li>
<li>
<b>Color balance</b><br />
Mouse: Use processing panel<br />
Changes the color balance of the image by changing the cyan-red, magenta-green and yellow-blue
color balance.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Local brightness</b><br />
Keyboard: <kbd>F6</kbd><br />
Mouse: Use processing panel<br />
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.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Color and contrast correction</b><br />
Keyboard: <kbd>F5</kbd><br />
Mouse: Use processing panel<br />
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.<br />
This value can be stored in the parameter DB.
</li>
<li>
<b>Landscape picture enhancement mode</b><br />
Keyboard: <kbd>Ctrl-L</kbd><br />
Mouse: Use navigation panel<br />
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").<br />
This value can be stored in the parameter DB.
</li>
</ul>
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.<br />
Default settings for most of the image processing parameters can be given in the <a href="#INIFile">INI file</a>.<br />
<b>Image Processing Tips</b><br />
<ul style="margin-top:0in;margin-bottom:0in">
<li>
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.
</li>
<li>Double clicking above a slider will permanently reset its value to the default value.</li>
</ul>
<h4><a name="KeepingParams"></a>Keeping Parameters Between Images</h4>
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 <kbd>F4</kbd> key, the behavior can be changed to keeping the parameters between
images. Pressing <kbd>F4</kbd> again will toggle back to not-keeping the parameters.<br />
<b>Note:</b> While keeping parameters mode is active, the parameter DB cannot be used. Parameter DB values are ignored while
this mode is active.
<h4><a name="Comparing"></a>Comparing Processed Image with Original Image</h4>
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.
<kbd>Ctrl-A</kbd> 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.
<h3><a name="Saving"></a>Saving and Renaming Images</h3>
<h4>Saving Images</h4>
Processed images can be saved as JPEG, BMP, PNG or TIFF files using the 'Save image' (<kbd>Ctrl-S</kbd>) 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 <kbd>Ctrl-Shift-S</kbd> keyboard shortcut.<br />
<b>Note:</b> The quality of the saved JPEG file can be set in the <a href="#INIFile">INI file</a>.<br />
JPEGView will automatically create a <a href="#ParameterDB">parameter DB</a> 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.<br />
<b>Note:</b> 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.<br />
Use this setting with care, be aware of the risk!<br />
<b>EXIF information</b><br />
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.<br />
<h4>Renaming Images</h4>
On the processing panel, images can be renamed by clicking on the file name with the mouse. To
confirm the new name, press <kbd>Enter</kbd> or click outside of the edit control. To cancel renaming, press <kbd>Esc</kbd>.
Note that renaming images is not possible when a slide show file is loaded because this would invalidate the slide show file.
<h4>Batch Rename/Copy</h4>
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:
<ol start="1" type="1">
<li>
First select the files to be renamed. Use the <kbd>Ctrl</kbd> and <kbd>Shift</kbd> keys to select multiple files and click the checkboxes.
</li>
<li>
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.<br />
Several placeholders are supported. See some examples below. A template pattern can be saved when needed.
</li>
<li>Before really renaming the files, always verify the new names by pressing the 'Preview' button.</li>
<li>
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.
</li>
</ol>
<b>Examples</b><br /><br />
<b>%pictures%\Digicam\%2y-%m-%M\%f</b><br />
Source image: IMG00244.JPG, created June 12, 2007<br />
Target: 'My pictures'\Digicam\07-06-June\IMG00244.JPG<br />
The folder 'Digicam\07-06-June\' is created when needed.<br /><br />
<b>%pictures%\Digicam\%M %y\Trip to Barcelona %x.%e</b><br />
Source image: IMG00244.JPG, created June 12, 2007<br />
Target: 'My pictures'\Digicam\June 2007\Trip to Barcelona 1.JPG<br />
<h3><a name="Clipboard"></a>Copying Images to the Clipboard</h3>
<b>Copy screen</b><br />
Keyboard: <kbd>Ctrl-C</kbd><br />
Copies the image (respectively the visible image section) as displayed on the screen to the clipboard. This is similar to the
<kbd>PrtSc</kbd> function, however text overlays and areas outside of the image are not included.<br />
<b>Copy processed image in its original size</b><br />
Keyboard: <kbd>Ctrl-X</kbd><br />
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.
<h3>Pasting Images from the Clipboard</h3>
Keyboard: <kbd>Ctrl-V</kbd><br />
Paste image from clipboard and fit to screen.<br />
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.
<br /><br />
Tip: Ctrl-C also enables to paste the current image file to a new location in the Windows Explorer using Ctrl-V.
<h3><a name="Printing"></a>Printing Images</h3>
Keyboard: <kbd>Ctrl-P</kbd><br />
Some aspects of printing can be changed in the INI file:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
<b>Default margins</b><br />
Setting: <code>PrintMargin</code><br />
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.
</li>
<li>
<b>Default width of printed image</b><br />
Setting: <code>PrintWidth</code><br />
Sets the default print width in centimeters. Use negative numbers to set the 'Fit to paper' printing mode.
</li>
<li>
<b>Units in print dialog</b><br />
Setting: <code>Units</code><br />
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.
</li>
</ul>
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.
<h2><a name="ParameterDB"></a>Parameter Database</h2>
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.
<ul style="margin-top:0in;margin-bottom:0in">
<li>
<b>Add image to the parameter DB</b><br />
Keyboard: <kbd>S</kbd><br />
Mouse: Use processing panel
</li>
<li>
<b>Remove image from the parameter DB</b><br />
Keyboard: <kbd>D</kbd><br />
Mouse: Use processing panel
</li>
<li>
<b>Backup parameter DB</b><br />
Use this command in the context menu to backup the parameter DB to another folder or disk.
</li>
<li>
<b>Restore parameter DB</b><br />
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.
</li>
</ul>
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:
<ul style="margin-top:0in;margin-bottom:0in">
<li>Moving the image to a different folder or renaming the image does not break the link</li>
<li>Two copies of the same image have the same parameter DB entry</li>
</ul>
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.<br />
The following parameters are stored in the parameter DB:
<ul style="margin-top:0in;margin-bottom:0in">
<li>
Visible section of image<br />
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).
</li>
<li>Rotation of image</li>
<li>Contrast value</li>
<li>Brightness value</li>
<li>Saturation value</li>
<li>Sharpness value (but no Unsharp Mask)</li>
<li>Color balance values</li>
<li>Local brighness correction on/off</li>
<li>Lighten shadows value</li>
<li>Darken highlights value</li>
<li>Deep shadows value</li>
<li>Color and contrast correction on/off</li>
<li>Color correction amount</li>
<li>Contrast correction amount</li>
<li>High quality resizing on/off</li>
</ul>
The parameter database is located in 'Users\<i>Username</i>\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.<br />
<b>Note:</b> The parameter DB settings have precedence over any image processing settings in the INI file.
<h2><a name="INIFile"></a>JPEGView.ini File</h2>
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.
<ul style="margin-top:0in;margin-bottom:0in">
<li>
User INI file<br />
'Users\<i>Username</i>\AppData\roaming\JPEGView\JPEGView.ini' (path name depends on Windows version)
</li>
<li>
Global INI file<br />
'<i>Path of JPEGView.exe</i>\JPEGView.ini'
</li>
</ul>
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.<br />
Some parameters can be written to the user INI file with the command 'Save parameters to INI' located in the
context menu.
<ul style="margin-top:0in;margin-bottom:0in">
<li>Default contrast</li>
<li>Default brightness</li>
<li>Default saturation</li>
<li>Default sharpness</li>
<li>Default color balance</li>
<li>Local brighness correction on/off by default</li>
<li>Color and contrast correction on/off by default</li>
<li>Default sorting order</li>
<li>Default auto zoom mode</li>
<li>Navigation panel on/off</li>
</ul>
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!<br /><br />
<b>Note:</b> 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.
<h3>INI File Settings</h3>
The INI file settings are explained in detail in the <a href="./JPEGView.ini">INI file (Caution: The link is to the global INI) itself</a>.
Only an overview on the available settings is given here:
<ul style="margin-top:0in;margin-bottom:0in">