Release history =============== 2022.09, 2023: - IJG JPEG 9f develop version code base. - Add Version Info to Program Resource for inclusion in Windows Explorer context menu "Open with" list. Thank to Thomas Henlich for suggestion. 2022: - IJG JPEG 9e release version code base. 2020: - IJG JPEG 9d release version code base. 2018: - IJG JPEG 9c release version code base. 2016: - IJG JPEG 9b release version code base. 2014: - IJG JPEG 9a release version code base. 2013: - IJG JPEG 9 release version code base. - Arithmetic encoding is now default (adopted by IrfanView 4.35). May change via Preferences. 2012.10: - IJG JPEG 9 develop version code base. 2012: - IJG JPEG 8d pre-release version code base. 2011: - IJG JPEG 8c release version code base. 2010.01: - New IJG JPEG 8 pre-release version code base. 2009.06: - New IJG JPEG 7 pre-release version code base. 2002.01: - Initial version. Jpegjoin - Lossless joining of JPEG images ========================================== What it is ---------- This is a small sample application to utilize the new lossless "crop 'n' drop" feature set of the Independent JPEG Group's jpegtran utility (see https://jpegclub.org for more information). It is derived from an earlier version of the Jpegcrop program, thus both programs share some common features and user interface elements, while offering specialized additional features. The split development has 'historical' reason. It is intended to provide an integrative toolkit including these and more features in a later stage of development. The main purpose of Jpegjoin is to compose (join) multiple images into a single image, similar to the arrangement of row and column cells in a table. Also provided is a feature to drop logo and legend images on the bottom of the cells. The cells can be cropped from the source images, similar to the Jpegcrop application. The join and drop features are provided by two menu entries: The joining features are provided under the "Project" menu beside the usual "File", the logo and legend drop features are under "Options". How to use ---------- You open your source files as usual with "File/Open...". Then you might select a crop frame similar to Jpegcrop. You add the frame to the "project" by choosing "Project/Add Frame". The "project" is an internal list of frames and corresponding parameters which shall compose the final image. After adding the frame to the project, you may close the source image window. The list data is maintained in the program space. You can see the selected frames and corresponding parameters with the "Project/Show Frame List" command. The appearing dialog allows you to check and delete individual frame entries. You repeat the procedure "File Open" -> "Frame select" (optional) -> "Add Frame" -> "Close Window" (optional) -> "Show Frame List" (optional) as necessary for all your source images. When you are done processing all desired images, you finally call the "Project/Save Project As..." command. You *must* now define the size in cell columns and rows appropriately for your desired output. You may specify a larger region, but not smaller than the number of cells that would fit in the table structure. You may optionally choose a cell spacing and a file comment (JPEG COM marker). You then choose a destination file, and, if all parameters are reasonable, get your desired output. You may open it then to check the result. Drop options ------------ The drop options of Jpegjoin provide limited possibilities for adding logo and legend bars to the image cells. The logo and legend images are predefined and reside per default in a separate directory called "drop". There is possible some customization of logo and legend naming via the jpegjoin.inf file. In the "Options" menu, or when adding frames to the project list via "Project/Add Frame", you may choose to add a logo image or select a legend image for insertion in the frame cell. The logo is inserted lower left, the legend lower right of the frame cell. Notes ----- Due to the nature of block-based lossless operation there are several restrictions regarding image and layout parameters for successful processing. In the current stage Jpegjoin does not carefully check the consistency of all parameters interactively in advance prior to the actual operation. So you might experience failures when trying some inconsistent settings. See the "Hints" section for tips. Hints ----- All source images *must* have the same subsampling values (1x1, 1x2, 2x1, or 2x2). If you have control over the compression of the source images, try to use the same quality/compression setting for all images. Otherwise the final image size might blow up due to quantization adaption. For adapting logo and legend images: You can alter names by editing jpegjoin.inf (do not change the structure though). Jpegjoin does *not* check or inspect the logo and legend images, it expects suitably subsampled images by adding subsampling identifiers to the filenames and then handing them over as is to the actual processing functions. Therefore you must care for providing suitably subsampled image variants according to your source material. The sample logo and legend images were generated from a BMP master for all practical situations by following command line actions: cjpeg -q 100 -sample 1x1 logo.bmp > logo_1x1.jpg cjpeg -q 100 -sample 1x2 logo.bmp > logo_1x2.jpg cjpeg -q 100 -sample 2x1 logo.bmp > logo_2x1.jpg cjpeg -q 100 -sample 2x2 logo.bmp > logo_2x2.jpg Similar to the legend images, I think you see the general scheme here. The "-q 100" is optimal for use with the jpegtran -trim option, but this is not currently available in Jpegjoin, so you might experience some "blow up" in final output size when using these features (if not your images have different q values anyway). Bottom Line ----------- Well, a first approach at the moment, and perhaps useful somehow :-)... Happy Jpeging, Guido