PackBits
(Format details) |
|||
| Line 6: | Line 6: | ||
It is byte-oriented (as opposed to pixel-oriented), so depending on how the image data is organized, it may be ineffective for images that use more than one byte per pixel. | It is byte-oriented (as opposed to pixel-oriented), so depending on how the image data is organized, it may be ineffective for images that use more than one byte per pixel. | ||
| + | |||
| + | == Format == | ||
| + | The compressed data stream consists of a code byte, followed by zero or more data bytes, followed by another code byte, and so on. | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! 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 char|signed bytes]]'', which leads to the equivalent definition: | ||
| + | |||
| + | {| class="wikitable" | ||
| + | |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. | ||
== Related formats == | == Related formats == | ||
| Line 13: | Line 39: | ||
* [http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf TIFF 6.0 Specification], Section 9: PackBits Compression | * [http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf TIFF 6.0 Specification], Section 9: PackBits Compression | ||
* [http://web.archive.org/web/20080705155158/http://developer.apple.com/technotes/tn/tn1023.html Technical Note TN1023]: Understanding PackBits | * [http://web.archive.org/web/20080705155158/http://developer.apple.com/technotes/tn/tn1023.html Technical Note TN1023]: Understanding PackBits | ||
| + | * [http://www.atari-wiki.com/?title=ST_Picture_Formats ST Picture Formats] | ||
== Resources == | == Resources == | ||
Revision as of 22:06, 22 September 2015
PackBits (or Apple Macintosh PackBits, or Macintosh RLE) is a form of run-length encoding often used to compress image data.
It is byte-oriented (as opposed to pixel-oriented), so depending on how the image data is organized, it may be ineffective for images that use more than one byte per pixel.
Contents |
Format
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.
Related formats
Formats that may use PackBits compression include MacPaint, TIFF, ILBM, and Prism Paint.
Specifications
- TIFF 6.0 Specification, Section 9: PackBits Compression
- Technical Note TN1023: Understanding PackBits
- ST Picture Formats