PCX, standing for ''PiCture eXchange'', is an
image file format
An image file format is a file format for a digital image. There are many formats that can be used, such as JPEG, PNG, and GIF. Most formats up until 2022 were for storing 2D images, not 3D ones. The data stored in an image file format may be co ...
developed by the now-defunct ZSoft Corporation of
Marietta, Georgia
Marietta is a city in and the county seat of Cobb County, Georgia, United States. At the 2020 census, the city had a population of 60,972. The 2019 estimate was 60,867, making it one of Atlanta's largest suburbs. Marietta is the fourth largest ...
,
United States
The United States of America (USA), also known as the United States (U.S.) or America, is a country primarily located in North America. It is a federal republic of 50 U.S. state, states and a federal capital district, Washington, D.C. The 48 ...
. It was the native file format for
PC Paintbrush
PC Paintbrush was a graphics editing software created by the ZSoft Corporation in 1984 for computers running the MS-DOS operating system.
Published alongside Microsoft Mouse DOS drivers version 4 from 1985 as a direct response to Mouse Systems ...
and became one of the first widely accepted
DOS
DOS (, ) is a family of disk-based operating systems for IBM PC compatible computers. The DOS family primarily consists of IBM PC DOS and a rebranded version, Microsoft's MS-DOS, both of which were introduced in 1981. Later compatible syste ...
imaging standards, although it has since been succeeded by more sophisticated image formats, such as
BMP,
JPEG
JPEG ( , short for Joint Photographic Experts Group and sometimes retroactively referred to as JPEG 1) is a commonly used method of lossy compression for digital images, particularly for those images produced by digital photography. The degr ...
, and
PNG. PCX files commonly store
palette-indexed images ranging from 2 or 4 colors to 16 and 256 colors, although the format has been extended to record true-color (24-bit) images as well.
[
]
PCX image formats
PCX was designed during the early development of PC display hardware and most of the formats it supported are no longer used. The table below shows a list of the most commonly used PCX formats. Contemporary image editing programs may not read PCX files that match older hardware.
PCX is supported by common image processing software including
ACDSee,
FastStone,
GIMP
Gimp or GIMP may refer to:
Clothing
* Bondage suit, also called a gimp suit, a type of suit used in BDSM
* Bondage mask, also called a gimp mask, often worn in conjunction with a gimp suit
Embroidery and crafts
* Gimp (thread), an ornamental tr ...
,
ImageMagick
ImageMagick, invoked from the command line as magick, is a free and open-source cross-platform software suite for displaying, creating, converting, modifying, and editing raster images. ImageMagick was created by John Cristy in 1987, and it ...
,
IrfanView
IrfanView () is an image viewer, editor, organiser and converter program for Microsoft Windows. It can also play video and audio files, and has some image creation and painting capabilities. IrfanView is free for non-commercial use; commercial ...
,
LView,
Netpbm
Netpbm (formerly Pbmplus) is an open-source software, open-source package of graphics programs and a programming library. It is used primarily in Unix, where it is found in all major open-source operating system distributions, but also works on M ...
,
PaintShop Pro
PaintShop Pro (PSP) is a raster and vector graphics editor for Microsoft Windows. It was originally published by Jasc Software. In October 2004, Corel purchased Jasc Software and the distribution rights to PaintShop Pro. PSP functionality can ...
,
Photoshop
Adobe Photoshop is a raster graphics editor developed and published by Adobe for Windows and macOS. It was created in 1987 by Thomas and John Knoll. It is the most used tool for professional digital art, especially in raster graphics editin ...
,
Visio,
PMview,
XnView
XnView is an image organizer and general-purpose file manager used for viewing, converting, organizing and editing raster images, as well as general purpose file management. It comes with built-in hex inspection, batch renaming, image scan ...
and
GraphicConverter. In version 2.1.4
FFmpeg
FFmpeg is a free and open-source software project consisting of a suite of libraries and programs for handling video, audio, and other multimedia files and streams. At its core is the command-line ffmpeg tool itself, designed for processing vide ...
could encode and decode the PCX pixel formats ''rgb24, rgb8, bgr8, rgb4_byte, bgr4_byte, gray, pal8,'' and ''monob''.
There is a multi-page version of PCX, used by some computer
fax
Fax (short for facsimile), sometimes called telecopying or telefax (short for telefacsimile), is the telephonic transmission of scanned printed material (both text and images), normally to a telephone number connected to a printer or other out ...
and document management programs, with file extension
.dcx
. A DCX file consists of a header introducing a set of following PCX files.
PCX file format
PCX files were designed for use on IBM-compatible PCs and always use
little endian
'' Jonathan_Swift.html" ;"title="Gulliver's Travels'' by Jonathan Swift">Gulliver's Travels'' by Jonathan Swift, the novel from which the term was coined
In computing, endianness is the order in which bytes within a word (data type), word of d ...
byte ordering. A PCX file has three main sections, in the following order
# 128-byte header
# image data
# (optional) 256-color palette
The PCX file header contains an identifier byte (value 10), a version number, image dimensions, 16 palette colors, number color planes, bit depth of each plane, and a value for compression method. PCX version numbers range from 0 to 5, this originally denoted the version of the
PC Paintbrush
PC Paintbrush was a graphics editing software created by the ZSoft Corporation in 1984 for computers running the MS-DOS operating system.
Published alongside Microsoft Mouse DOS drivers version 4 from 1985 as a direct response to Mouse Systems ...
program used to create the PCX file. The header always has space for 16 colors though the number of colors used depends upon the bit depth of the image. The header is composed of 18 fields:
All PCX files use the same compression scheme and the compression value is always 1. No other values have been defined and there are no uncompressed PCX files. One source claims that 0 (uncompressed) is ''allowed, but not much software supports it''.
Image data layout
PCX image data is stored in rows or scan lines in top-down order. If the image has multiple planes, these are stored by plane within row, such that all the red data for row 0 are followed by all the green data for row 0, then all the blue data, then alpha data. This pattern is repeated for each line as shown in the next table:
When an image is less than 8 bits per pixel, each line is padded to the next even byte boundary.
For example, if an image has 1 plane of 1-bit data (monochrome) with a width of 22 pixels, each row will be 4 bytes long, having 32 bits per row with 10 bits unused.
Image data compression
PCX image data are compressed using
run-length encoding
Run-length encoding (RLE) is a form of lossless data compression in which ''runs'' of data (consecutive occurrences of the same data value) are stored as a single occurrence of that data value and a count of its consecutive occurrences, rather th ...
(RLE), a simple
lossless compression
Lossless compression is a class of data compression that allows the original data to be perfectly reconstructed from the compressed data with no loss of information. Lossless compression is possible because most real-world data exhibits statisti ...
algorithm that collapses a series of three or more consecutive bytes with identical values into a two-byte pair. The two most-significant bits of a byte are used to determine whether the given data represent a single
pixel
In digital imaging, a pixel (abbreviated px), pel, or picture element is the smallest addressable element in a Raster graphics, raster image, or the smallest addressable element in a dot matrix display device. In most digital display devices, p ...
of a given palette index or color value, or an RLE pair representing a series of several pixels of a single value:
# If both bits are 1, the byte is interpreted as the run length. This leaves 6 bits for the actual run length value, a range of 0-63.
# In any other case, the byte is interpreted as a single pixel value. This leaves all values for which bit #7 and bit #8 are not 1 at the same time. This allows all values under 192 to be encoded in a single byte.
Due to the use of the two most-significant bits as flags, pixel values from 192 to 255 (with their most-significant bit already set) must be stored in an RLE byte pair, even when they only occur one or two pixels in succession, whereas color indexes 0 to 191 can be stored directly or in RLE byte pairs (whichever is more space-efficient); therefore, the actual compression ratio could be optimized with proper sorting of palette entries, though this is not feasible where the file must share its color palette with other images. For example, a palette could be optimized with the most commonly used colors occurring in palette positions 0 to 191 and the least common colors allocated to the remaining quarter of the palette.
Another inefficiency with the RLE algorithm is that it is possible to store chunks with a length of 0, which allows whitespace in the file. This allowed PCX files to be decompressed slightly faster on the processors it was originally intended for.
The PCX compression algorithm requires very little processor power or memory to apply, a significant concern with computer systems when it was designed. Compression algorithms used by newer image formats are more efficient when compressing images such as photographs, and
dithered or otherwise complex graphics.
Color palette
A PCX file has space in its header for a 16 color palette. When 256-color VGA hardware became available there was not enough space for the palette in a PCX file; even the 54 unused bytes after the header would not be enough. The solution chosen was to put the palette at the end of the file, along with a marker byte to confirm its existence.
If a PCX file has a 256-color palette, it is found 768 bytes from the end of the file. In this case the value in the byte preceding the palette should be 12 (0x0C). The palette is stored as a sequence of RGB triples; its usable length is defined by the number of colors in the image. Color values in a PCX palette always use 8 bits, regardless of the bit depth of the image.
References
{{DEFAULTSORT:Pcx
Raster graphics file formats
Filename extensions