def thumbnail_extract(self, metadata: GExiv2.Metadata, size_in_bytes) -> bool: thumbnail = metadata.get_exif_thumbnail() if not thumbnail: previews = metadata.get_preview_properties() if previews: # In every RAW file I've analyzed, the smallest preview is always first preview = previews[0] thumbnail = metadata.get_preview_image(preview).get_data() if thumbnail == self.exif_thumbnail_or_preview: self.minimum_exif_read_size_in_bytes_thumbnail = size_in_bytes return True return False
def extract_thumbnail(self, metadata: GExiv2.Metadata) -> None: # not all files have an exif preview, but all CR2 & CR3 seem to exif_thumbnail = metadata.get_exif_thumbnail() self.process_exif_thumbnail(thumbnail=exif_thumbnail) previews = metadata.get_preview_properties() self.no_previews = len(previews) for idx, preview in enumerate(previews): image = metadata.get_preview_image(preview) if image.get_width() >= 160 and image.get_height() >= 120: preview_thumbnail = metadata.get_preview_image(preview).get_data() if self.has_exif_thumbnail: self.exif_thumbnail_and_preview_identical = preview_thumbnail == exif_thumbnail else: self.exif_thumbnail_or_preview = preview_thumbnail self.preview_source = PreviewSource(idx).name.replace('_', ' ').capitalize() self.preview_width = image.get_width() self.preview_height = image.get_height() self.preview_extension = image.get_extension() return