You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
3.4 KiB
170 lines
3.4 KiB
# encoding: utf-8
|
|
|
|
"""
|
|
Constants specific the the image sub-package
|
|
"""
|
|
|
|
|
|
class JPEG_MARKER_CODE(object):
|
|
"""
|
|
JPEG marker codes
|
|
"""
|
|
TEM = b'\x01'
|
|
DHT = b'\xC4'
|
|
DAC = b'\xCC'
|
|
JPG = b'\xC8'
|
|
|
|
SOF0 = b'\xC0'
|
|
SOF1 = b'\xC1'
|
|
SOF2 = b'\xC2'
|
|
SOF3 = b'\xC3'
|
|
SOF5 = b'\xC5'
|
|
SOF6 = b'\xC6'
|
|
SOF7 = b'\xC7'
|
|
SOF9 = b'\xC9'
|
|
SOFA = b'\xCA'
|
|
SOFB = b'\xCB'
|
|
SOFD = b'\xCD'
|
|
SOFE = b'\xCE'
|
|
SOFF = b'\xCF'
|
|
|
|
RST0 = b'\xD0'
|
|
RST1 = b'\xD1'
|
|
RST2 = b'\xD2'
|
|
RST3 = b'\xD3'
|
|
RST4 = b'\xD4'
|
|
RST5 = b'\xD5'
|
|
RST6 = b'\xD6'
|
|
RST7 = b'\xD7'
|
|
|
|
SOI = b'\xD8'
|
|
EOI = b'\xD9'
|
|
SOS = b'\xDA'
|
|
DQT = b'\xDB' # Define Quantization Table(s)
|
|
DNL = b'\xDC'
|
|
DRI = b'\xDD'
|
|
DHP = b'\xDE'
|
|
EXP = b'\xDF'
|
|
|
|
APP0 = b'\xE0'
|
|
APP1 = b'\xE1'
|
|
APP2 = b'\xE2'
|
|
APP3 = b'\xE3'
|
|
APP4 = b'\xE4'
|
|
APP5 = b'\xE5'
|
|
APP6 = b'\xE6'
|
|
APP7 = b'\xE7'
|
|
APP8 = b'\xE8'
|
|
APP9 = b'\xE9'
|
|
APPA = b'\xEA'
|
|
APPB = b'\xEB'
|
|
APPC = b'\xEC'
|
|
APPD = b'\xED'
|
|
APPE = b'\xEE'
|
|
APPF = b'\xEF'
|
|
|
|
STANDALONE_MARKERS = (
|
|
TEM, SOI, EOI, RST0, RST1, RST2, RST3, RST4, RST5, RST6, RST7
|
|
)
|
|
|
|
SOF_MARKER_CODES = (
|
|
SOF0, SOF1, SOF2, SOF3, SOF5, SOF6, SOF7, SOF9, SOFA, SOFB, SOFD,
|
|
SOFE, SOFF
|
|
)
|
|
|
|
marker_names = {
|
|
b'\x00': 'UNKNOWN',
|
|
b'\xC0': 'SOF0',
|
|
b'\xC2': 'SOF2',
|
|
b'\xC4': 'DHT',
|
|
b'\xDA': 'SOS', # start of scan
|
|
b'\xD8': 'SOI', # start of image
|
|
b'\xD9': 'EOI', # end of image
|
|
b'\xDB': 'DQT',
|
|
b'\xE0': 'APP0',
|
|
b'\xE1': 'APP1',
|
|
b'\xE2': 'APP2',
|
|
b'\xED': 'APP13',
|
|
b'\xEE': 'APP14',
|
|
}
|
|
|
|
@classmethod
|
|
def is_standalone(cls, marker_code):
|
|
return marker_code in cls.STANDALONE_MARKERS
|
|
|
|
|
|
class MIME_TYPE(object):
|
|
"""
|
|
Image content types
|
|
"""
|
|
BMP = 'image/bmp'
|
|
GIF = 'image/gif'
|
|
JPEG = 'image/jpeg'
|
|
PNG = 'image/png'
|
|
TIFF = 'image/tiff'
|
|
|
|
|
|
class PNG_CHUNK_TYPE(object):
|
|
"""
|
|
PNG chunk type names
|
|
"""
|
|
IHDR = 'IHDR'
|
|
pHYs = 'pHYs'
|
|
IEND = 'IEND'
|
|
|
|
|
|
class TIFF_FLD_TYPE(object):
|
|
"""
|
|
Tag codes for TIFF Image File Directory (IFD) entries.
|
|
"""
|
|
BYTE = 1
|
|
ASCII = 2
|
|
SHORT = 3
|
|
LONG = 4
|
|
RATIONAL = 5
|
|
|
|
field_type_names = {
|
|
1: 'BYTE', 2: 'ASCII char', 3: 'SHORT', 4: 'LONG',
|
|
5: 'RATIONAL'
|
|
}
|
|
|
|
|
|
TIFF_FLD = TIFF_FLD_TYPE
|
|
|
|
|
|
class TIFF_TAG(object):
|
|
"""
|
|
Tag codes for TIFF Image File Directory (IFD) entries.
|
|
"""
|
|
IMAGE_WIDTH = 0x0100
|
|
IMAGE_LENGTH = 0x0101
|
|
X_RESOLUTION = 0x011A
|
|
Y_RESOLUTION = 0x011B
|
|
RESOLUTION_UNIT = 0x0128
|
|
|
|
tag_names = {
|
|
0x00FE: 'NewSubfileType',
|
|
0x0100: 'ImageWidth',
|
|
0x0101: 'ImageLength',
|
|
0x0102: 'BitsPerSample',
|
|
0x0103: 'Compression',
|
|
0x0106: 'PhotometricInterpretation',
|
|
0x010E: 'ImageDescription',
|
|
0x010F: 'Make',
|
|
0x0110: 'Model',
|
|
0x0111: 'StripOffsets',
|
|
0x0112: 'Orientation',
|
|
0x0115: 'SamplesPerPixel',
|
|
0x0117: 'StripByteCounts',
|
|
0x011A: 'XResolution',
|
|
0x011B: 'YResolution',
|
|
0x011C: 'PlanarConfiguration',
|
|
0x0128: 'ResolutionUnit',
|
|
0x0131: 'Software',
|
|
0x0132: 'DateTime',
|
|
0x0213: 'YCbCrPositioning',
|
|
0x8769: 'ExifTag',
|
|
0x8825: 'GPS IFD',
|
|
0xC4A5: 'PrintImageMatching',
|
|
}
|