PackBits
Line 4: | Line 4: | ||
}} | }} | ||
'''PackBits''' (or '''Apple Macintosh PackBits''', or '''Macintosh RLE''') is a form of [[run-length encoding]] often used to compress image data. | '''PackBits''' (or '''Apple Macintosh PackBits''', or '''Macintosh RLE''') is a form of [[run-length encoding]] often used to compress image data. | ||
− | |||
− | |||
== Format details == | == Format details == | ||
Line 34: | Line 32: | ||
== Variants == | == Variants == | ||
− | PackBits | + | PackBits compresses a sequence of bytes, but variants exist in which a unit of decompressed data is more than one byte (e.g. some [[PICT]], [[Palm bitmap]], and [[IFF-DEEP]] compression schemes), or even less than one byte (e.g. [[GlowIcons]]). |
== Related formats == | == Related formats == |
Latest revision as of 17:40, 23 June 2024
PackBits (or Apple Macintosh PackBits, or Macintosh RLE) is a form of run-length encoding often used to compress image data.
Contents |
[edit] Format details
The compressed data stream consists of a code byte, followed by zero or more data bytes, followed by another code byte, and so on.
Code byte (N) | Instructions |
---|---|
0 ≤ N ≤ 127 | Interpret the next N+1 bytes literally. |
N = 128 | Reserved |
129 ≤ N ≤ 255 | Repeat the next byte 257−N times. |
For whatever reason, PackBits is usually described in terms of signed bytes, which leads to the equivalent definition:
N = −128 | Reserved |
−127 ≤ N ≤ −1 | Repeat the next byte 1−N times. |
0 ≤ N ≤ 127 | Interpret the next N+1 bytes literally. |
The reserved code byte (128 or −128) should be ignored, unless a format specification says otherwise. A few formats use it to mark the end of the compressed data.
[edit] Variants
PackBits compresses a sequence of bytes, but variants exist in which a unit of decompressed data is more than one byte (e.g. some PICT, Palm bitmap, and IFF-DEEP compression schemes), or even less than one byte (e.g. GlowIcons).
[edit] Related formats
Formats that may use PackBits compression include MacPaint, PICT, TIFF, ILBM, and DEGAS.
[edit] Specifications
- TIFF 6.0 Specification, Section 9: PackBits Compression
- Technical Note TN1023: Understanding PackBits
- AtariForumWiki: PackBits Compression Algorithm