From e34bc19f7126b80764a4c8747a7a2a1636289396 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Mon, 16 Apr 2018 22:27:29 +0200 Subject: Add support for BMP To be completely honest, BMP have no metadata, but we still add it, just in caseā„¢ --- src/images.py | 14 ++++++++++++++ tests/data/dirty.bmp | Bin 0 -> 5746 bytes tests/test_libmat2.py | 15 +++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 tests/data/dirty.bmp diff --git a/src/images.py b/src/images.py index 06f3e22..707207b 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 0000000..be9094d Binary files /dev/null and b/tests/data/dirty.bmp differ diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index 34f7301..ae04dc2 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') -- cgit v1.3