SFW93A format and conversion details

This page explains the SFW93A format in detail. It also explains several different ways to convert the SFW93A format to .jpg and other formats.

SFW93A format details

The SFW93A format is a Seattle FilmWorks slightly reformatted JPEG image, where the reformatting consists of:

The first 6 bytes of a file in this format are: SFW93A. This is a rarely seen, short-lived, original manifestation of the SFW format that appears to be very low resolution (320 x 200 pixels).  It's been seen on Seattle FilmWorks PICTURES ON DISK! 3.5 inch diskettes dated 1994.

The SFW93A format files usually have a filetype of .#nn (eg, .#00, .#01, .#02, ..., .#24, etc), though you may also encounter files that have been renamed like ".#00.sfw", or have been renamed as ".sfw" where the 2 digits that originally came after the "#" are moved in front of the dot (eg, "28048871_24.sfw").

Nord's sfwjpg (circa 2016-04 or later) (Vista, Win7, Win8, Win8.1, Win10), XnView (PC, Mac, Linux, etc), and PhotoWorks (in both its PC and Mac form) are the only known public programs which can directly convert this SFW93A file format.  See this nutshell of the (circa 2016-04 or later) Nord's sfwjpg ability to convert an entire directory of SFW93A images. It's quite easy. See this concise hint for how to convert SFW93A by using XnView. See this description for 2 different ways to convert SFW93A by using PhotoWorks. But also, the SFW93A format can easily enough be converted manually using a hex editor (like this), or with Nord's HexDump and a text editor (like this).  If all the above approaches fail, then the EZPOD.EXE and EZSFW.EXE programs (see here) on the Seattle FilmWorks diskettes might possibly be used as a fallback, though I do not recommend them.

I first heard about the SFW93A format in the PMView Pro shareware documentation on their Seattle FilmWorks (SFW) help page, explored briefly using the PhotoWorks software and by peeking inside podw.exe using IDA freeware [ie, IDA v5.0 freeware, not the more capable IDA v7.7 (or higher) freeware that the link shows], and finally (as of 2015-01) gleaned the SFW93A format internals after Ryan Finnin Day graciously provided an entire roll of such images inside a directory whose name was in the form "nnnnnnnn.ROL", where nnnnnnnn are the digits of the roll #. The filenames in that directory had the general form of "nnnnnnnn.#nn", where "nn" is the image # (except for the first file, which I suspect Ryan had renamed).

It was originally uncertain to me if Ryan's .ROL directory's contents were a direct copy of such a directory on the original Seattle FilmWorks supplied 3.5" diskette, since Ryan no longer had that original diskette. After examining the three (3) PICTURES ON DISK! diskettes that Helmut Jurgensen graciously sent me in 2016-05, I could see that Ryan's .ROL directory contents were indeed a direct copy, except that he had renamed the first file to include an .sfw suffix.

To give you a concrete example, here's the filenames I saw in directory \28048871.ROL:

So far, from analyzing these images, from the original code analysis with IDA, from experimenting with PhotoWorks and other image oriented software, and from examining Helmut's SFW93A images, I've concluded:

Convert SFW93A via Nord's sfwjpg

How to convert a roll of SFW93A files using Nord's sfwjpg
If you have a directory of .#nn (or .sfw) files in SFW93A format, you can use Nord's sfwjpg to convert the images faster than any other method. Nord's sfwjpg is very easy to setup, and it's very easy to use. Nord's sfwjpg will convert automatically at a 75% quality. Most often, that will not show any visually detectable loss (since the SFW93A images are already at such a low resolution -- 320 x 200).

The steps to use Nord's sfwjpg to convert an entire roll of SFW93A format images is:

  1. Display Nord's SFWJPG - Seattle Filmworks to JPG conversion (Windows) page.

  2. Click one of the 2 video links provided on that page.

  3. Follow the steps in Nord's sfwjpg video to get the sfwjpg.exe program into the directory where the SFW93A images reside.

  4. Issue the following CMD Prompt command from that directory of SFW93A images:

    > sfwjpg *.#??
  5. If any of the SFW93A format files have previously been renamed with the.sfw filetype, then also issue the following CMD Prompt command:

    > sfwjpg *.sfw

That's probably the easiest, quickest way to convert an entire directory of SFW93A format images to .jpg.

Added benefit
Item 5 also serves the dual purpose of probably being the easiest, quickest way to convert an entire directory of (compressed) SFW94A format images -- the vast bulk of .sfw images -- to .jpg.

Convert SFW93A via XnView

How to convert a roll of SFW93A files using XnView
If you have a directory of .#nn (or .sfw) files in SFW93A format, you can use XnView to display and convert the images probably faster than any other method (except Nord's sfwjpg). XnView will convert automatically at a high quality which will not show any visually detectable loss.

The steps to use XnView to convert a roll of SFW93A format images is:

  1. Use XnView's Browser window to open the directory of SFW93A format .#nn or .sfw files.

  2. Open one of the .#nn or .sfw files.

  3. Use XnView's Tool / View in Hex mode function to see if the file begins with SFW93A.

  4. Exit that Hex mode listing by pressing the Esc key.

If that file began with SFW93A, then its probably safe to assume all the .#nn or .sfw files in that directory are SFW93A format. In that case, continue:

  1. Double-click open a .#nn or .sfw file.

  2. Click File / Save As.

  3. Add a suffix of _nn to the filename (just before the suggested .jpg).

    For example, if you had opened file 28048871.#01, then add suffix _01 so the filename looks like 28048871_01.jpg.

  4. Click Save.

  5. Repeat steps 5-8 for each .#nn and .sfw file which is in SFW93A format.

That's probably the second quickest way to convert an entire directory of SFW93A format images to .jpg (unless you can figure out how to automate that sequence with XnView's Batch facility). Furthermore, it will be seamlessly performed at a 90% quality level, so you'll likely not be able to visually detect any loss of quality. XnView's quality level is much better than the PhotoWorks Batch Convert 75% quality level (which can not be increased).

Note: For a more concise wording of this section, click on this concise hint.

Convert SFW93A via PhotoWorks for Windows

How to convert a roll of SFW93A files using PhotoWorks for Windows
Even though the PhotoWorks programs for the PC and the Mac are two good ways to read and convert SFW93A format files, you should first prepare a directory (containing such SFW93A format files) for PhotoWorks by renaming each of the files so the image # is appended to the roll #. Otherwise, PhotoWorks will not recognize the images as being uniquely named. You might as well change the filetype to .sfw at the same time. For example, you might do something like renaming similar to the following example, where the roll # was 28048871:

     original                 new
 filename.filetype     filename.filetype
 -------- --------  ----------- --------
 28048871.#01       28048871_01.sfw
 28048871.#02       28048871_02.sfw
 
 
 28048871.#09       28048871_09.sfw
 28048871.#10       28048871_10.sfw
 28048871.#11       28048871_11.sfw
 
 
 28048871.#19       28048871_19.sfw
 28048871.#20       28048871_20.sfw
 
 
 28048871.#24       28048871_24.sfw

You could do that manually, eg, using CMD or Windows Explorer, or you could automate it a bit using a PowerShell script similar to the following:

 #
 # rename_sfw93a_rrrrrrrr_hnn_to_rrrrrrrr_nn_sfw.ps1 --
 #
 # Rename SFW93A images rrrrrrrr.#nn to rrrrrrrr_nn.sfw.
 #
 echo "Directory before renaming..."
 dir
 echo "Rename SFW93A images rrrrrrrr.#nn to rrrrrrrr_nn.sfw..."
 gci *.#[0-9][0-9] | % { ren $_.FullName "$($_.BaseName)_$($_.Name.substring($($_.Name.length)-2,2)).sfw" }
 echo "Directory after renaming..."
 dir

Then run PhotoWorks and follow a sequence similar to the following example:

  1. Wait for the splash screen to disappear or make it go away immediately by clicking on it.

  2. When the Album Wizard appears, click Using images from your computer, then OK, then Next.

  3. When "Album Wizard - Step 2 of 5" appears, type a description for the album. For example, you might type the roll #, its date or a range of dates, and the general subject matter.

  4. Click Next.

  5. Select a thumbnail size, then click Next.

  6. When the "Add Images" dialog box appears, browse to the folder which contains your renamed SFW93A images (in which the image # is appended to the roll #), select each of the images using standard keyboard combinations that select multiple items at a time: eg, Ctrl-A, Shift-cursor keys, Ctrl-cursor keys, single click, etc, then click Open.

  7. When the "Album Wizard - Step 4 of 5" page box appears, verify all the images are in the list, then click Finish.

  8. The entire album of image thumbnails should appear.

Convert SFW93A via PhotoWorks Batch / File Format Convert method

At this point, you can follow the next step to quickly convert these images to commonly readable .jpg files using the PhotoWorks' Batch Convert function:

  1. Select all the images using Ctrl-A or one of the other multi-item keyboard selection mechanisms, then click Batch / File Format Convert, then on the Batch Conversion dialog box, choose your format (eg, .BMP, .JPG, or one of the others), browse to your chosen destination directory, then click OK.

The problem with that approach when you choose .JPG as the output format is that you'll lose significant resolution during the conversion. It might be better to choose .BMP, then use another image processing tool before finally converting to .jpg format.

Convert SFW93A via PhotoWorks individual file save method

But another way to use PhotoWorks to save to .jpg format without losing much visually detectable resolution is to save each image individually. That way you can control the saved resolution. I'd suggest saving them at the 85% to 90% quality level. Then afterwards you can send the resultant images through jpegcrop (or some other similar tool) to losslessly rotate and/or crop the edges, without losing any more resolution.

To perform the resolution (ie, quality level) controlled, individual image .jpg save in PhotoWorks, do the following steps beginning while the Album window is open and all the image thumbnails are visible (ie, after step 8 above):

  1. Open an image by double-clicking it.

  2. Click File, then Save As/Convert To.

  3. When the "Save As..." dialog box occurs, select the JPEG (*.JPG) item in the "List files of type:" pulldown menu.

  4. Locate the desired destination folder and double-click on it.

  5. Click Options >>.

  6. Change the quality to 90 %. The easiest way to do that is to move the slider all the way to the right, then clicking once to the left of the slider button.

  7. In the "Filename" box, optionally change ".JPG" to ".jpg".
    [The change to lower case seems to work only at this late stage.]

  8. Click OK.

Then repeat steps 10-17 for each of the SFW93A format images.

Convert SFW93A to .jpg via a hex editor

How to manually convert a SFW93A file to jpg using a hex editor
Even though the XnView program and the PhotoWorks programs for the PC and the Mac are probably the best way to read and convert a SFW93A format file (with the possible exception of a program supplied on the original Seattle FilmWorks diskettes along with the SFW93A format images), some people might not have the proper hardware/software to run XnView or PhotoWorks. There is a fallback mechanism for those folks. A SFW93A format file can also be manually converted to a JPEG/JFIF .jpg file fairly easily using a hex editor followed by some file renaming. Use the following sequence:

  1. Open one of the SFW93A format .#nn image files in a hex editor.

  2. Edit the 5-byte signature in the APP0 segment, starting at byte 36 (ie, hex offset 0x24), immediately after the APP0 segment's length, ie, immediately after the "FF D8 FF E0 00 10" that begins at offset 30 (hex 1E).

    • Change the bytes after the "00 10" to 4A 46 49 46 00, which equates to "JFIF\0", the standard APP0 signature in a JPEG/JFIF .jpg file.

    • Verify that what precedes "JFIF\0" is "FF D8 FF E0 00 10".

    • Verify that what succeeds "JFIF\0" is "01 01 00 00 01 00 01 00 00".

  3. Delete the first 30 bytes (ie, hex 1E bytes), thereby leaving the JFIF signature "FF D8 FF E0" as the first 4 bytes of the file.

  4. Close the hex editor and save the editing changes.

  5. Suffix the filename with the image # and rename the filetype to .jpg. For example, rename "28048871.#01" to "28048871_01.jpg" or rename "28048871.#24" to "28048871_24.jpg". The renaming is similar to that described above, except the resultant filetype is .jpg (instead of .sfw), since your hex editing has already effected the conversion to JPEG/JFIF format.

Convert SFW93A to .jpg via Nord's hexdump and a text editor

How to manually convert a SFW93A file to jpg using Nord's hexdump and a text editor
Joe Nord's HexDump utility can be used to fairly quickly, manually, losslessly convert SFW93A format .#nn and .sfw images to .jpg. It is another variant of the hex editor method just mentioned. However, I think Joe Nord's HexDump is easier to use than a typical hex editor.

Probably the best way to understand how to do this is to review Using Nord's HEXDUMP to see SFW signatures in a hex dump, then imitating its example, adapt its example for each of the image files in your particular roll's directory.


This page is copyright © 2015-2022, Richard H. Jones. All rights reserved.

Page's last update was on 2022-06-22.