diff --git a/src/images.py b/src/images.py index 06f3e22d9c52814a774e70607f4cdffb32527e70..707207b51357db18a034bb099ccbac080b8f06e8 100644 --- a/src/images.py +++ b/src/images.py @@ -75,3 +75,17 @@ class TiffParser(GdkPixbufAbstractParser): 'FileTypeExtension', 'ImageHeight', 'ImageSize', 'ImageWidth', 'MIMEType', 'Megapixels', 'SourceFile'} + +class BMPParser(GdkPixbufAbstractParser): + mimetypes = {'image/bmp', 'image/x-ms-bmp'} + meta_whitelist = {'SourceFile', 'ExifToolVersion', 'FileName', 'Directory', + 'FileSize', 'FileModifyDate', 'FileAccessDate', + 'FileInodeChangeDate', 'FilePermissions', 'FileType', + 'FileTypeExtension', 'MIMEType', 'BMPVersion', 'ImageWidth', + 'ImageHeight', 'Planes', 'BitDepth', 'Compression', 'ImageLength', + 'PixelsPerMeterX', 'PixelsPerMeterY', 'NumColors', + 'NumImportantColors', 'RedMask', 'GreenMask', 'BlueMask', + 'AlphaMask', 'ColorSpace', 'RedEndpoint', 'GreenEndpoint', + 'BlueEndpoint', 'GammaRed', 'GammaGreen', 'GammaBlue', 'ImageSize', + 'Megapixels'} + diff --git a/tests/data/dirty.bmp b/tests/data/dirty.bmp new file mode 100644 index 0000000000000000000000000000000000000000..be9094d1f8e9f9e9ae0584863c2aa6cb48b7f05d Binary files /dev/null and b/tests/data/dirty.bmp differ diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index 34f7301845fd326721e7951e300ead8c3677a040..ae04dc2cd0b454bcd4da343b37d16b9e1c5cff42 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py @@ -307,3 +307,18 @@ class TestCleaning(unittest.TestCase): self.assertEqual(p.get_meta(), {}) os.remove('./tests/data/clean.tiff') + + def test_bmp(self): + shutil.copy('./tests/data/dirty.bmp', './tests/data/clean.bmp') + p = images.BMPParser('./tests/data/clean.bmp') + + meta = p.get_meta() + self.assertEqual(meta, {}) # bmp has no meta :) + + ret = p.remove_all() + self.assertTrue(ret) + + p = images.BMPParser('./tests/data/clean.bmp.cleaned') + self.assertEqual(p.get_meta(), {}) + + os.remove('./tests/data/clean.bmp')