First a bit of history.
DVPEG started out as a JPEG viewer in the early 90's when the JPEG format was first introduced Intel 386 computers were new. For me it was a learning experience in programming and it was the first large project I'd tackled.
There were many versions, plenty of bugs and I merrily hacked away and kept on changing the internals.
The final version released was version 3.0l. It is really 3.0L not 3.01.
I mostly finished the 3.1 version but never debugged it. It has pop-up menu's with
context sensitive help and every key was programmable to do any function
or any list of functions (ie zoom * 3, adjust the red color, query the user
for the amount of green color to adjust and then print). All help files
were also editable; and therefor could be written in any language
But that was pretty complex and I figured that most people would make a mess of it all if they edited the text configuration files. In the end, I never fully debugged it and along the way the source code to version 3.0L was lost.
But there was still strong interest in a DOS based JPEG viewer that could work in a 286 with < 640k of RAM. I then used the source code from version 3.0J and fixed several bugs and made it smaller and better suited to the people who wanted the viewer.
By far the biggest problem with this viewer was the graphics routines. At one point the routine which detected the video card; wiped out the BIOS settings on certain computers! I tried VESA but many cards had VESA drivers that were buggy at best. Even excellent software like UNIVBE didn't correctly recognize most of the video cards on the 386/486 computers I had access to! It really was all of the video problems that made me stop development. By that point in time all of the big, well known, viewers had support for JPEG and it would have been a lot of work for me to add support for other image formats to my viewer. The biggest problem being that the memory management routines in my viewer were only designed for the JPEG structure and this ment a huge waste of memory when I tried to support other formats or add features.
The core of the program is the excellent work by Tom Lane and the IJG. It provides the core compression / decompression routines for JPEG images. A link to the IJG archives are at the bottom of this web page.
Towards the end of my work on the viewer I'd already started work on JPEG manipulation / printing programs. The main goal was to build a database of pictures and be able to "tile" those pictures on pages for printing. The main program (TILE) has been used at this university for several years now. We basically take digital pictures of the students and then generate pages of pictures with names and sometimes extra info like addresses, email .. etc.
Within 3 months there were changes to the program to speed up the graphics and add a host of features.
Shortly after this, spured by the introduction of QPEG speedups (2.5x) involved merging several parts of the JPEG decompression (upsampling, color conversion, 8/15/16/24 bit conversion and writing to the video memory) as well as tweaking parts in assembler. Those changes made it very hard to upgrade the IJG libraries to support the new progressive JPEGs that I never did upgrade.
Here is the README file from the IJG JPEG tools
Here are the DOS tools (cjpeg, djpeg, jpgtran) that allow you to Convert to JPEG, Decompress JPEG and TRANslate JPEG files respectively.
The IJG FTP archives contain the latest version of the JPEG tools (source code).