Linux worldls-302.fr.planethoster.net 4.18.0-553.8.1.lve.el7h.x86_64 #1 SMP Thu Jul 4 15:19:33 UTC 2024 x86_64
LiteSpeed
Server IP : 10.185.0.203 & Your IP : 216.73.216.32
Domains :
Cant Read [ /etc/named.conf ]
User : gerathty
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib64 /
python2.7 /
site-packages /
PIL /
Delete
Unzip
Name
Size
Permission
Date
Action
ArgImagePlugin.py
12.17
KB
-rw-r--r--
2024-02-22 08:02
ArgImagePlugin.pyc
12.79
KB
-rw-r--r--
2024-02-22 08:02
ArgImagePlugin.pyo
12.79
KB
-rw-r--r--
2024-02-22 08:02
BdfFontFile.py
3.27
KB
-rw-r--r--
2024-02-22 08:02
BdfFontFile.pyc
2.97
KB
-rw-r--r--
2024-02-22 08:02
BdfFontFile.pyo
2.97
KB
-rw-r--r--
2024-02-22 08:02
BmpImagePlugin.py
6.52
KB
-rw-r--r--
2024-02-22 08:02
BmpImagePlugin.pyc
5.34
KB
-rw-r--r--
2024-02-22 08:02
BmpImagePlugin.pyo
5.34
KB
-rw-r--r--
2024-02-22 08:02
BufrStubImagePlugin.py
1.46
KB
-rw-r--r--
2024-02-22 08:02
BufrStubImagePlugin.pyc
2
KB
-rw-r--r--
2024-02-22 08:02
BufrStubImagePlugin.pyo
2
KB
-rw-r--r--
2024-02-22 08:02
ContainerIO.py
2.54
KB
-rw-r--r--
2024-02-22 08:02
ContainerIO.pyc
2.09
KB
-rw-r--r--
2024-02-22 08:02
ContainerIO.pyo
2.09
KB
-rw-r--r--
2024-02-22 08:02
CurImagePlugin.py
1.89
KB
-rw-r--r--
2024-02-22 08:02
CurImagePlugin.pyc
1.64
KB
-rw-r--r--
2024-02-22 08:02
CurImagePlugin.pyo
1.64
KB
-rw-r--r--
2024-02-22 08:02
DcxImagePlugin.py
1.76
KB
-rw-r--r--
2024-02-22 08:02
DcxImagePlugin.pyc
1.9
KB
-rw-r--r--
2024-02-22 08:02
DcxImagePlugin.pyo
1.9
KB
-rw-r--r--
2024-02-22 08:02
EpsImagePlugin.py
10.64
KB
-rw-r--r--
2024-02-22 08:02
EpsImagePlugin.pyc
9.44
KB
-rw-r--r--
2024-02-22 08:02
EpsImagePlugin.pyo
9.44
KB
-rw-r--r--
2024-02-22 08:02
ExifTags.py
4.69
KB
-rw-r--r--
2024-02-22 08:02
ExifTags.pyc
4.81
KB
-rw-r--r--
2024-02-22 08:02
ExifTags.pyo
4.81
KB
-rw-r--r--
2024-02-22 08:02
FitsStubImagePlugin.py
1.61
KB
-rw-r--r--
2024-02-22 08:02
FitsStubImagePlugin.pyc
2.01
KB
-rw-r--r--
2024-02-22 08:02
FitsStubImagePlugin.pyo
2.01
KB
-rw-r--r--
2024-02-22 08:02
FliImagePlugin.py
3.37
KB
-rw-r--r--
2024-02-22 08:02
FliImagePlugin.pyc
3.5
KB
-rw-r--r--
2024-02-22 08:02
FliImagePlugin.pyo
3.5
KB
-rw-r--r--
2024-02-22 08:02
FontFile.py
3.32
KB
-rw-r--r--
2024-02-22 08:02
FontFile.pyc
3.5
KB
-rw-r--r--
2024-02-22 08:02
FontFile.pyo
3.5
KB
-rw-r--r--
2024-02-22 08:02
FpxImagePlugin.py
6.04
KB
-rw-r--r--
2024-02-22 08:02
FpxImagePlugin.pyc
4.55
KB
-rw-r--r--
2024-02-22 08:02
FpxImagePlugin.pyo
4.55
KB
-rw-r--r--
2024-02-22 08:02
GbrImagePlugin.py
1.54
KB
-rw-r--r--
2024-02-22 08:02
GbrImagePlugin.pyc
1.81
KB
-rw-r--r--
2024-02-22 08:02
GbrImagePlugin.pyo
1.81
KB
-rw-r--r--
2024-02-22 08:02
GdImageFile.py
2.11
KB
-rw-r--r--
2024-02-22 08:02
GdImageFile.pyc
1.68
KB
-rw-r--r--
2024-02-22 08:02
GdImageFile.pyo
1.68
KB
-rw-r--r--
2024-02-22 08:02
GifImagePlugin.py
11.09
KB
-rw-r--r--
2024-02-22 08:02
GifImagePlugin.pyc
7.95
KB
-rw-r--r--
2024-02-22 08:02
GifImagePlugin.pyo
7.95
KB
-rw-r--r--
2024-02-22 08:02
GimpGradientFile.py
3.1
KB
-rw-r--r--
2024-02-22 08:02
GimpGradientFile.pyc
3.61
KB
-rw-r--r--
2024-02-22 08:02
GimpGradientFile.pyo
3.61
KB
-rw-r--r--
2024-02-22 08:02
GimpPaletteFile.py
1.3
KB
-rw-r--r--
2024-02-22 08:02
GimpPaletteFile.pyc
1.47
KB
-rw-r--r--
2024-02-22 08:02
GimpPaletteFile.pyo
1.47
KB
-rw-r--r--
2024-02-22 08:02
GribStubImagePlugin.py
1.47
KB
-rw-r--r--
2024-02-22 08:02
GribStubImagePlugin.pyc
2.01
KB
-rw-r--r--
2024-02-22 08:02
GribStubImagePlugin.pyo
2.01
KB
-rw-r--r--
2024-02-22 08:02
Hdf5StubImagePlugin.py
1.51
KB
-rw-r--r--
2024-02-22 08:02
Hdf5StubImagePlugin.pyc
2.01
KB
-rw-r--r--
2024-02-22 08:02
Hdf5StubImagePlugin.pyo
2.01
KB
-rw-r--r--
2024-02-22 08:02
IcnsImagePlugin.py
6.09
KB
-rw-r--r--
2024-02-22 08:02
IcnsImagePlugin.pyc
6.56
KB
-rw-r--r--
2024-02-22 08:02
IcnsImagePlugin.pyo
6.56
KB
-rw-r--r--
2024-02-22 08:02
IcoImagePlugin.py
1.84
KB
-rw-r--r--
2024-02-22 08:02
IcoImagePlugin.pyc
1.59
KB
-rw-r--r--
2024-02-22 08:02
IcoImagePlugin.pyo
1.59
KB
-rw-r--r--
2024-02-22 08:02
ImImagePlugin.py
9.8
KB
-rw-r--r--
2024-02-22 08:02
ImImagePlugin.pyc
8.04
KB
-rw-r--r--
2024-02-22 08:02
ImImagePlugin.pyo
8.04
KB
-rw-r--r--
2024-02-22 08:02
Image.py
67.81
KB
-rw-r--r--
2024-02-22 08:02
Image.pyc
39.15
KB
-rw-r--r--
2024-02-22 08:02
Image.pyo
39.15
KB
-rw-r--r--
2024-02-22 08:02
ImageChops.py
7.25
KB
-rw-r--r--
2024-02-22 08:02
ImageChops.pyc
4.97
KB
-rw-r--r--
2024-02-22 08:02
ImageChops.pyo
4.97
KB
-rw-r--r--
2024-02-22 08:02
ImageCms.py
29.63
KB
-rw-r--r--
2024-02-22 08:02
ImageCms.pyc
12.13
KB
-rw-r--r--
2024-02-22 08:02
ImageCms.pyo
12.13
KB
-rw-r--r--
2024-02-22 08:02
ImageColor.py
7.04
KB
-rw-r--r--
2024-02-22 08:02
ImageColor.pyc
6.92
KB
-rw-r--r--
2024-02-22 08:02
ImageColor.pyo
6.92
KB
-rw-r--r--
2024-02-22 08:02
ImageDraw.py
11.36
KB
-rw-r--r--
2024-02-22 08:02
ImageDraw.pyc
8.63
KB
-rw-r--r--
2024-02-22 08:02
ImageDraw.pyo
8.63
KB
-rw-r--r--
2024-02-22 08:02
ImageDraw2.py
3.11
KB
-rw-r--r--
2024-02-22 08:02
ImageDraw2.pyc
5.1
KB
-rw-r--r--
2024-02-22 08:02
ImageDraw2.pyo
5.1
KB
-rw-r--r--
2024-02-22 08:02
ImageEnhance.py
2.71
KB
-rw-r--r--
2024-02-22 08:02
ImageEnhance.pyc
2.54
KB
-rw-r--r--
2024-02-22 08:02
ImageEnhance.pyo
2.54
KB
-rw-r--r--
2024-02-22 08:02
ImageFile.py
14.72
KB
-rw-r--r--
2024-02-22 08:02
ImageFile.pyc
9.74
KB
-rw-r--r--
2024-02-22 08:02
ImageFile.pyo
9.64
KB
-rw-r--r--
2024-02-22 08:02
ImageFileIO.py
968
B
-rw-r--r--
2024-02-22 08:02
ImageFileIO.pyc
614
B
-rw-r--r--
2024-02-22 08:02
ImageFileIO.pyo
614
B
-rw-r--r--
2024-02-22 08:02
ImageFilter.py
6.51
KB
-rw-r--r--
2024-02-22 08:02
ImageFilter.pyc
8.7
KB
-rw-r--r--
2024-02-22 08:02
ImageFilter.pyo
8.7
KB
-rw-r--r--
2024-02-22 08:02
ImageFont.py
17.38
KB
-rw-r--r--
2024-02-22 08:02
ImageFont.pyc
15.96
KB
-rw-r--r--
2024-02-22 08:02
ImageFont.pyo
15.96
KB
-rw-r--r--
2024-02-22 08:02
ImageGL.py
483
B
-rw-r--r--
2024-02-22 08:02
ImageGL.pyc
394
B
-rw-r--r--
2024-02-22 08:02
ImageGL.pyo
394
B
-rw-r--r--
2024-02-22 08:02
ImageGrab.py
1.85
KB
-rw-r--r--
2024-02-22 08:02
ImageGrab.pyc
1.07
KB
-rw-r--r--
2024-02-22 08:02
ImageGrab.pyo
1.07
KB
-rw-r--r--
2024-02-22 08:02
ImageMath.py
7.66
KB
-rw-r--r--
2024-02-22 08:02
ImageMath.pyc
10.94
KB
-rw-r--r--
2024-02-22 08:02
ImageMath.pyo
10.94
KB
-rw-r--r--
2024-02-22 08:02
ImageMode.py
1.27
KB
-rw-r--r--
2024-02-22 08:02
ImageMode.pyc
1.34
KB
-rw-r--r--
2024-02-22 08:02
ImageMode.pyo
1.34
KB
-rw-r--r--
2024-02-22 08:02
ImageOps.py
13
KB
-rw-r--r--
2024-02-22 08:02
ImageOps.pyc
8.43
KB
-rw-r--r--
2024-02-22 08:02
ImageOps.pyo
8.38
KB
-rw-r--r--
2024-02-22 08:02
ImagePalette.py
5.4
KB
-rw-r--r--
2024-02-22 08:02
ImagePalette.pyc
5.7
KB
-rw-r--r--
2024-02-22 08:02
ImagePalette.pyo
5.7
KB
-rw-r--r--
2024-02-22 08:02
ImagePath.py
1.32
KB
-rw-r--r--
2024-02-22 08:02
ImagePath.pyc
1.36
KB
-rw-r--r--
2024-02-22 08:02
ImagePath.pyo
1.36
KB
-rw-r--r--
2024-02-22 08:02
ImageSequence.py
792
B
-rw-r--r--
2024-02-22 08:02
ImageSequence.pyc
903
B
-rw-r--r--
2024-02-22 08:02
ImageSequence.pyo
903
B
-rw-r--r--
2024-02-22 08:02
ImageShow.py
4.45
KB
-rw-r--r--
2024-02-22 08:02
ImageShow.pyc
5.22
KB
-rw-r--r--
2024-02-22 08:02
ImageShow.pyo
5.22
KB
-rw-r--r--
2024-02-22 08:02
ImageStat.py
4.22
KB
-rw-r--r--
2024-02-22 08:02
ImageStat.pyc
4.66
KB
-rw-r--r--
2024-02-22 08:02
ImageStat.pyo
4.66
KB
-rw-r--r--
2024-02-22 08:02
ImageTransform.py
2.8
KB
-rw-r--r--
2024-02-22 08:02
ImageTransform.pyc
1.87
KB
-rw-r--r--
2024-02-22 08:02
ImageTransform.pyo
1.87
KB
-rw-r--r--
2024-02-22 08:02
ImageWin.py
6.73
KB
-rw-r--r--
2024-02-22 08:02
ImageWin.pyc
6.55
KB
-rw-r--r--
2024-02-22 08:02
ImageWin.pyo
6.55
KB
-rw-r--r--
2024-02-22 08:02
ImtImagePlugin.py
2.17
KB
-rw-r--r--
2024-02-22 08:02
ImtImagePlugin.pyc
1.56
KB
-rw-r--r--
2024-02-22 08:02
ImtImagePlugin.pyo
1.56
KB
-rw-r--r--
2024-02-22 08:02
IptcImagePlugin.py
7.52
KB
-rw-r--r--
2024-02-22 08:02
IptcImagePlugin.pyc
6.29
KB
-rw-r--r--
2024-02-22 08:02
IptcImagePlugin.pyo
6.29
KB
-rw-r--r--
2024-02-22 08:02
JpegImagePlugin.py
19.42
KB
-rw-r--r--
2024-02-22 08:02
JpegImagePlugin.pyc
16.24
KB
-rw-r--r--
2024-02-22 08:02
JpegImagePlugin.pyo
16.24
KB
-rw-r--r--
2024-02-22 08:02
JpegPresets.py
12.05
KB
-rw-r--r--
2024-02-22 08:02
JpegPresets.pyc
6.3
KB
-rw-r--r--
2024-02-22 08:02
JpegPresets.pyo
6.3
KB
-rw-r--r--
2024-02-22 08:02
McIdasImagePlugin.py
1.69
KB
-rw-r--r--
2024-02-22 08:02
McIdasImagePlugin.pyc
1.67
KB
-rw-r--r--
2024-02-22 08:02
McIdasImagePlugin.pyo
1.67
KB
-rw-r--r--
2024-02-22 08:02
MicImagePlugin.py
2.12
KB
-rw-r--r--
2024-02-22 08:02
MicImagePlugin.pyc
2.09
KB
-rw-r--r--
2024-02-22 08:02
MicImagePlugin.pyo
2.09
KB
-rw-r--r--
2024-02-22 08:02
MpegImagePlugin.py
1.79
KB
-rw-r--r--
2024-02-22 08:02
MpegImagePlugin.pyc
2.49
KB
-rw-r--r--
2024-02-22 08:02
MpegImagePlugin.pyo
2.49
KB
-rw-r--r--
2024-02-22 08:02
MspImagePlugin.py
2.12
KB
-rw-r--r--
2024-02-22 08:02
MspImagePlugin.pyc
2.39
KB
-rw-r--r--
2024-02-22 08:02
MspImagePlugin.pyo
2.39
KB
-rw-r--r--
2024-02-22 08:02
OleFileIO.py
15.92
KB
-rw-r--r--
2024-02-22 08:02
OleFileIO.pyc
12.62
KB
-rw-r--r--
2024-02-22 08:02
OleFileIO.pyo
12.62
KB
-rw-r--r--
2024-02-22 08:02
PSDraw.py
5.57
KB
-rw-r--r--
2024-02-22 08:02
PSDraw.pyc
5.5
KB
-rw-r--r--
2024-02-22 08:02
PSDraw.pyo
5.5
KB
-rw-r--r--
2024-02-22 08:02
PaletteFile.py
1.08
KB
-rw-r--r--
2024-02-22 08:02
PaletteFile.pyc
1.31
KB
-rw-r--r--
2024-02-22 08:02
PaletteFile.pyo
1.31
KB
-rw-r--r--
2024-02-22 08:02
PalmImagePlugin.py
9.33
KB
-rw-r--r--
2024-02-22 08:02
PalmImagePlugin.pyc
9.39
KB
-rw-r--r--
2024-02-22 08:02
PalmImagePlugin.pyo
9.39
KB
-rw-r--r--
2024-02-22 08:02
PcdImagePlugin.py
1.77
KB
-rw-r--r--
2024-02-22 08:02
PcdImagePlugin.pyc
1.73
KB
-rw-r--r--
2024-02-22 08:02
PcdImagePlugin.pyo
1.73
KB
-rw-r--r--
2024-02-22 08:02
PcfFontFile.py
6.03
KB
-rw-r--r--
2024-02-22 08:02
PcfFontFile.pyc
6.2
KB
-rw-r--r--
2024-02-22 08:02
PcfFontFile.pyo
6.2
KB
-rw-r--r--
2024-02-22 08:02
PcxImagePlugin.py
4.53
KB
-rw-r--r--
2024-02-22 08:02
PcxImagePlugin.pyc
3.84
KB
-rw-r--r--
2024-02-22 08:02
PcxImagePlugin.pyo
3.78
KB
-rw-r--r--
2024-02-22 08:02
PdfImagePlugin.py
5.73
KB
-rw-r--r--
2024-02-22 08:02
PdfImagePlugin.pyc
5.04
KB
-rw-r--r--
2024-02-22 08:02
PdfImagePlugin.pyo
5.04
KB
-rw-r--r--
2024-02-22 08:02
PixarImagePlugin.py
1.57
KB
-rw-r--r--
2024-02-22 08:02
PixarImagePlugin.pyc
1.24
KB
-rw-r--r--
2024-02-22 08:02
PixarImagePlugin.pyo
1.24
KB
-rw-r--r--
2024-02-22 08:02
PngImagePlugin.py
18.19
KB
-rw-r--r--
2024-02-22 08:02
PngImagePlugin.pyc
17.9
KB
-rw-r--r--
2024-02-22 08:02
PngImagePlugin.pyo
17.9
KB
-rw-r--r--
2024-02-22 08:02
PpmImagePlugin.py
3.23
KB
-rw-r--r--
2024-02-22 08:02
PpmImagePlugin.pyc
2.94
KB
-rw-r--r--
2024-02-22 08:02
PpmImagePlugin.pyo
2.94
KB
-rw-r--r--
2024-02-22 08:02
PsdImagePlugin.py
7.28
KB
-rw-r--r--
2024-02-22 08:02
PsdImagePlugin.pyc
6.17
KB
-rw-r--r--
2024-02-22 08:02
PsdImagePlugin.pyo
6.17
KB
-rw-r--r--
2024-02-22 08:02
SgiImagePlugin.py
2.05
KB
-rw-r--r--
2024-02-22 08:02
SgiImagePlugin.pyc
2
KB
-rw-r--r--
2024-02-22 08:02
SgiImagePlugin.pyo
2
KB
-rw-r--r--
2024-02-22 08:02
SunImagePlugin.py
1.9
KB
-rw-r--r--
2024-02-22 08:02
SunImagePlugin.pyc
1.99
KB
-rw-r--r--
2024-02-22 08:02
SunImagePlugin.pyo
1.99
KB
-rw-r--r--
2024-02-22 08:02
TarIO.py
1.19
KB
-rw-r--r--
2024-02-22 08:02
TarIO.pyc
1.08
KB
-rw-r--r--
2024-02-22 08:02
TarIO.pyo
1.08
KB
-rw-r--r--
2024-02-22 08:02
TgaImagePlugin.py
4.83
KB
-rw-r--r--
2024-02-22 08:02
TgaImagePlugin.pyc
4.14
KB
-rw-r--r--
2024-02-22 08:02
TgaImagePlugin.pyo
4.14
KB
-rw-r--r--
2024-02-22 08:02
TiffImagePlugin.py
34.05
KB
-rw-r--r--
2024-02-22 08:02
TiffImagePlugin.pyc
26.2
KB
-rw-r--r--
2024-02-22 08:02
TiffImagePlugin.pyo
26.07
KB
-rw-r--r--
2024-02-22 08:02
TiffTags.py
4.53
KB
-rw-r--r--
2024-02-22 08:02
TiffTags.pyc
4.9
KB
-rw-r--r--
2024-02-22 08:02
TiffTags.pyo
4.9
KB
-rw-r--r--
2024-02-22 08:02
WalImageFile.py
5.39
KB
-rw-r--r--
2024-02-22 08:02
WalImageFile.pyc
2.13
KB
-rw-r--r--
2024-02-22 08:02
WalImageFile.pyo
2.13
KB
-rw-r--r--
2024-02-22 08:02
WebPImagePlugin.py
978
B
-rw-r--r--
2024-02-22 08:02
WebPImagePlugin.pyc
1.86
KB
-rw-r--r--
2024-02-22 08:02
WebPImagePlugin.pyo
1.86
KB
-rw-r--r--
2024-02-22 08:02
WmfImagePlugin.py
4
KB
-rw-r--r--
2024-02-22 08:02
WmfImagePlugin.pyc
3.97
KB
-rw-r--r--
2024-02-22 08:02
WmfImagePlugin.pyo
3.97
KB
-rw-r--r--
2024-02-22 08:02
XVThumbImagePlugin.py
1.8
KB
-rw-r--r--
2024-02-22 08:02
XVThumbImagePlugin.pyc
1.6
KB
-rw-r--r--
2024-02-22 08:02
XVThumbImagePlugin.pyo
1.6
KB
-rw-r--r--
2024-02-22 08:02
XbmImagePlugin.py
2.39
KB
-rw-r--r--
2024-02-22 08:02
XbmImagePlugin.pyc
2.52
KB
-rw-r--r--
2024-02-22 08:02
XbmImagePlugin.pyo
2.52
KB
-rw-r--r--
2024-02-22 08:02
XpmImagePlugin.py
3.01
KB
-rw-r--r--
2024-02-22 08:02
XpmImagePlugin.pyc
2.8
KB
-rw-r--r--
2024-02-22 08:02
XpmImagePlugin.pyo
2.8
KB
-rw-r--r--
2024-02-22 08:02
__init__.py
183
B
-rw-r--r--
2024-02-22 08:02
__init__.pyc
137
B
-rw-r--r--
2024-02-22 08:02
__init__.pyo
137
B
-rw-r--r--
2024-02-22 08:02
_binary.py
1.09
KB
-rw-r--r--
2024-02-22 08:02
_binary.pyc
2.52
KB
-rw-r--r--
2024-02-22 08:02
_binary.pyo
2.52
KB
-rw-r--r--
2024-02-22 08:02
Save
Rename
# # The Python Imaging Library. # $Id$ # # BMP file handler # # Windows (and OS/2) native bitmap storage format. # # history: # 1995-09-01 fl Created # 1996-04-30 fl Added save # 1997-08-27 fl Fixed save of 1-bit images # 1998-03-06 fl Load P images as L where possible # 1998-07-03 fl Load P images as 1 where possible # 1998-12-29 fl Handle small palettes # 2002-12-30 fl Fixed load of 1-bit palette images # 2003-04-21 fl Fixed load of 1-bit monochrome images # 2003-04-23 fl Added limited support for BI_BITFIELDS compression # # Copyright (c) 1997-2003 by Secret Labs AB # Copyright (c) 1995-2003 by Fredrik Lundh # # See the README file for information on usage and redistribution. # __version__ = "0.7" from PIL import Image, ImageFile, ImagePalette, _binary i8 = _binary.i8 i16 = _binary.i16le i32 = _binary.i32le o8 = _binary.o8 o16 = _binary.o16le o32 = _binary.o32le # # -------------------------------------------------------------------- # Read BMP file BIT2MODE = { # bits => mode, rawmode 1: ("P", "P;1"), 4: ("P", "P;4"), 8: ("P", "P"), 16: ("RGB", "BGR;15"), 24: ("RGB", "BGR"), 32: ("RGB", "BGRX") } def _accept(prefix): return prefix[:2] == b"BM" ## # Image plugin for the Windows BMP format. class BmpImageFile(ImageFile.ImageFile): format = "BMP" format_description = "Windows Bitmap" def _bitmap(self, header = 0, offset = 0): if header: self.fp.seek(header) read = self.fp.read # CORE/INFO s = read(4) s = s + ImageFile._safe_read(self.fp, i32(s)-4) if len(s) == 12: # OS/2 1.0 CORE bits = i16(s[10:]) self.size = i16(s[4:]), i16(s[6:]) compression = 0 lutsize = 3 colors = 0 direction = -1 elif len(s) in [40, 64]: # WIN 3.1 or OS/2 2.0 INFO bits = i16(s[14:]) self.size = i32(s[4:]), i32(s[8:]) compression = i32(s[16:]) lutsize = 4 colors = i32(s[32:]) direction = -1 if i8(s[11]) == 0xff: # upside-down storage self.size = self.size[0], 2**32 - self.size[1] direction = 0 else: raise IOError("Unsupported BMP header type (%d)" % len(s)) if not colors: colors = 1 << bits # MODE try: self.mode, rawmode = BIT2MODE[bits] except KeyError: raise IOError("Unsupported BMP pixel depth (%d)" % bits) if compression == 3: # BI_BITFIELDS compression mask = i32(read(4)), i32(read(4)), i32(read(4)) if bits == 32 and mask == (0xff0000, 0x00ff00, 0x0000ff): rawmode = "BGRX" elif bits == 16 and mask == (0x00f800, 0x0007e0, 0x00001f): rawmode = "BGR;16" elif bits == 16 and mask == (0x007c00, 0x0003e0, 0x00001f): rawmode = "BGR;15" else: # print bits, map(hex, mask) raise IOError("Unsupported BMP bitfields layout") elif compression != 0: raise IOError("Unsupported BMP compression (%d)" % compression) # LUT if self.mode == "P": palette = [] greyscale = 1 if colors == 2: indices = (0, 255) else: indices = list(range(colors)) for i in indices: rgb = read(lutsize)[:3] if rgb != o8(i)*3: greyscale = 0 palette.append(rgb) if greyscale: if colors == 2: self.mode = rawmode = "1" else: self.mode = rawmode = "L" else: self.mode = "P" self.palette = ImagePalette.raw( "BGR", b"".join(palette) ) if not offset: offset = self.fp.tell() self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, ((self.size[0]*bits+31)>>3)&(~3), direction))] self.info["compression"] = compression def _open(self): # HEAD s = self.fp.read(14) if s[:2] != b"BM": raise SyntaxError("Not a BMP file") offset = i32(s[10:]) self._bitmap(offset=offset) class DibImageFile(BmpImageFile): format = "DIB" format_description = "Windows Bitmap" def _open(self): self._bitmap() # # -------------------------------------------------------------------- # Write BMP file SAVE = { "1": ("1", 1, 2), "L": ("L", 8, 256), "P": ("P", 8, 256), "RGB": ("BGR", 24, 0), } def _save(im, fp, filename, check=0): try: rawmode, bits, colors = SAVE[im.mode] except KeyError: raise IOError("cannot write mode %s as BMP" % im.mode) if check: return check stride = ((im.size[0]*bits+7)//8+3)&(~3) header = 40 # or 64 for OS/2 version 2 offset = 14 + header + colors * 4 image = stride * im.size[1] # bitmap header fp.write(b"BM" + # file type (magic) o32(offset+image) + # file size o32(0) + # reserved o32(offset)) # image data offset # bitmap info header fp.write(o32(header) + # info header size o32(im.size[0]) + # width o32(im.size[1]) + # height o16(1) + # planes o16(bits) + # depth o32(0) + # compression (0=uncompressed) o32(image) + # size of bitmap o32(1) + o32(1) + # resolution o32(colors) + # colors used o32(colors)) # colors important fp.write(b"\0" * (header - 40)) # padding (for OS/2 format) if im.mode == "1": for i in (0, 255): fp.write(o8(i) * 4) elif im.mode == "L": for i in range(256): fp.write(o8(i) * 4) elif im.mode == "P": fp.write(im.im.getpalette("RGB", "BGRX")) ImageFile._save(im, fp, [("raw", (0,0)+im.size, 0, (rawmode, stride, -1))]) # # -------------------------------------------------------------------- # Registry Image.register_open(BmpImageFile.format, BmpImageFile, _accept) Image.register_save(BmpImageFile.format, _save) Image.register_extension(BmpImageFile.format, ".bmp")