Screenshots are arguably second only to encodes in importance for a site publication - they are generally the first thing a viewer sees of a particular publication, well before watching it. As such, assigning quality screenshots to our publications is essential.
This page explains how to:

Snapshots from dumped AVI

It is the easiest method of doing so, especially in cases where you are preparing to, or have, encoded the video.
It is suggested that you dump the AVI to a lossless RGB based codec (Windows users can use the CamStudio or Lagarith codecs, frequently used by our encoders; FFV1 can also be used if set to the BGR32 colorspace) and open the file in any player that can show the video in its original native resolution (for Windows users, VirtualDub is suggested). Find a frame that is publishable quality, screencap the screen (or the frame if the player supports it), crop the result properly and save it as a PNG in your favorite image editor.

Convert to PNG

BMP files should be converted into PNG format. You can use bmp2png downloadable at:, or you can use an image manipulation program such as The GIMP.
If you are going to optimise your screenshot, however, leave it as a BMP; PNGOUT is perfectly capable of reading BMP files (see below).


The screenshots should be of a certain resolution (depending on the system).
Genesis/SegaCD/32X320x224 or 256x224320x240 or 256x240
PSX320x240384x288 (PAL)
ArcadeVariable (depends on game)-
Windows/LinuxVariable (respect game's aspect ratio)-
Apple II280x192-
Jaguar (CD)326x240260x240
TODO: Update information with more platforms.

Resizing to account for proper aspect ratio correction (BizHawk using Saturnus and Nyma/Octoshock cores only)

The PSX and Sega Saturn output at a wide range of resolutions. As such, those screenshots need to be resized to the target resolution after accounting for aspect ratio correction specified above. The overscan must not be cropped out in the process. This can be done in any image manipulation program with the best resizer available. For image manipulation programs, we recommend (can use Fant or Supersampling) or GIMP (use Sinc (Lanczos3)).

Minimizing the file size

TODO: Update info. Shell script for PNG could be replaced with cross-platform oxipng. JPEG recompression via GIMP could be supplemented with jpegoptim (Windows).
Presently, there is a limit of 45k for screenshot files - this is primarily because there are some movie list pages which display large numbers of screenshots, and those can take a long time and a large amount of bandwidth to display as it is.
We generally prefer lossless screenshots, and the below techniques are usually sufficient to achieve file sizes well within the target range. For some systems (particularly 3D systems such as N64 and PSX) the images may be more complex than this; in those cases, we accept a certain degree of lossiness in screenshots. Historically, this has been in the form of JPEG screenshots saved with no subsampling and as high a quality setting as can be used while staying within that limit; more recently there has been an effort to use tools such as Animmerger to reduce the colour palette of the image while still preserving the benefits of PNG as an image format. It is recommended that you contact a publisher before resorting to these means.


We use OptiPNG (to ensure the minimum amount of colours are stored in the PNG's palette) followed by PNGOUT to compress our PNG files. This algorithm outperforms programs such as AdvPNG in almost all cases.
To get optimal compression, use several random trials (-r) and choose whichever result yields the smallest compression; the scripts and utilities below employ this approach. Alternatively, you can try using the first 15 powers of 2 in the block split threshold (-b) option for your trials; however in practice this has yielded worse results.
DeflOpt (Linux/i386 version) can be used optionally at the end to reduce the file just those few bytes more (it almost always does).


Download the ScreenshotCompressor from our TASTools project page, in addition to OptiPNG, PNGOUT and DeflOpt. Run your image through OptiPNG first, then follow the instructions packaged with the tool (it is as simple as drag and drop). This will use a configurable number of random trials in the spirit of the script in the Linux section below.
Optional reading: There exists a tutorial about PNGOUT for Windows users.


Assuming you have optipng, pngout, and deflopt in your $PATH, you can run this shell script to compress pngs under Linux. Utilizes several random trials to get the best possible compression, more trials = more compression, works best on uncompressed source bmps or png.):
Run as:
./ screenshot.png 100

cp $name.png $name-best.png
optipng $name-best.png
for (''''(i=1; i<=$2; i++)'''')
  pngout -r -y $name.png $name-trial.png
  DeflOpt $name-trial.png
  du --bytes $name-best.png $name-trial.png | sort -n | awk 'BEGIN {ORS=" "} {print $2}' | xargs cp
Note that PNGOUT can read BMP files directly. You don't need to convert them first. Also note that in some cases PNGOUT produces PNG files that don't work on all platforms (due to broken zlib implementations on those platforms); this is rare in practice.


3D and other modern games usually have too complicated picture to fit into the 45kB limit allocated for a publication screenshot. This forces us to use JPG format instead of PNG, but still do some work to minimize the color loss.
Load up the image in GIMP, export it to JPEG. Then set preview to on, chroma to 4:4:4 and DCT to floating-point and adjust the quality (usually to the maximum that gives under 45kB).

Screenshots last edited by feos 10 days ago
Page History Latest diff List referrers View Source