Expected behavior: Returns a collection of PageImageArea objects representing all images found in the document, or None if image extraction is not supported.
Save extracted images to files
To save extracted images to disk:
fromgroupdocs.parserimportParserimportos# Create output directoryoutput_dir="extracted_images"os.makedirs(output_dir,exist_ok=True)# Create an instance of Parser classwithParser("./sample.docx")asparser:# Extract imagesimages=parser.get_images()ifimagesisNone:print("Image extraction isn't supported")elifnotimages:print("No images found")else:# Iterate over images and save themforidx,imageinenumerate(images):# Get file extension based on image typeextension=image.file_type.extension# Generate filenamefilename=f"image_{idx+1}{extension}"filepath=os.path.join(output_dir,filename)# Save image to fileimage.save(filepath)print(f"Saved: {filepath}")
The following sample file is used in this example: sample.docx
Expected behavior: Provides access to raw image data as a stream, with optional format conversion.
Convert images during extraction
To convert images to a specific format during extraction:
fromgroupdocs.parserimportParserfromgroupdocs.parser.optionsimportImageOptions,ImageFormatimportos# Create output directoryoutput_dir="converted_images"os.makedirs(output_dir,exist_ok=True)# Create an instance of Parser classwithParser("./sample.pdf")asparser:# Extract imagesimages=parser.get_images()ifimages:# Create image options for PNG formatpng_options=ImageOptions(ImageFormat.PNG)foridx,imageinenumerate(images):# Save image as PNG (regardless of original format)filename=f"image_{idx+1}.png"filepath=os.path.join(output_dir,filename)# Save with conversionimage.save(filepath,png_options)print(f"Saved as PNG: {filepath}")else:print("No images found")
The following sample file is used in this example: sample.pdf
Expected behavior: All extracted images are converted to PNG format before saving, regardless of their original format.
Batch image extraction
Extract images from multiple documents:
fromgroupdocs.parserimportParserimportosfrompathlibimportPathdefextract_images_from_directory(input_dir,output_dir):"""
Extract images from all documents in a directory.
"""os.makedirs(output_dir,exist_ok=True)# Supported document extensionsextensions=['.pdf','.docx','.doc','.xlsx','.pptx','.ppt']forfile_pathinsorted(Path(input_dir).rglob('*')):iffile_path.suffix.lower()inextensions:print(f"\nProcessing: {file_path.name}")try:withParser(str(file_path))asparser:images=parser.get_images()ifimagesisNone:print(f" Image extraction not supported")continue# Create subdirectory for this documentdoc_output_dir=os.path.join(output_dir,file_path.stem)os.makedirs(doc_output_dir,exist_ok=True)# Save imagesimage_count=0foridx,imageinenumerate(images):filename=f"image_{idx+1}{image.file_type.extension}"filepath=os.path.join(doc_output_dir,filename)image.save(filepath)image_count+=1print(f" Extracted {image_count} images")exceptExceptionase:print(f" Error: {e}")# Usageextract_images_from_directory("documents","extracted_images")