def extract_jbig2(im_obj: pikepdf.Object, globals_obj: pikepdf.Object = None) -> Image: with NamedTemp() as imgfile, NamedTemp() as globalfile, NamedTemp() as outfile: imgfile.write(im_obj.read_raw_bytes()) imgfile.seek(0) args = ['jbig2dec', '-e', '-o', outfile.name] if globals_obj is not None: globalfile.write(globals_obj.read_raw_bytes()) globalfile.seek(0) args.append(globalfile.name) args.append(imgfile.name) run(args, stdout=DEVNULL, check=True) im = Image.open(outfile) im.load() # Load pixel data into memory so file can be closed return im
def extract_jbig2(im_obj: pikepdf.Object, globals_obj: pikepdf.Object = None) -> Image: with NamedTemp() as imgfile, NamedTemp() as globalfile, NamedTemp( ) as outfile: imgfile.write(im_obj.read_raw_bytes()) imgfile.seek(0) args = ['jbig2dec', '-e', '-o', outfile.name] if globals_obj is not None: globalfile.write(globals_obj.read_raw_bytes()) globalfile.seek(0) args.append(globalfile.name) args.append(imgfile.name) run(args, check=True) return Image.open(outfile)