code: def select_visible_page_image(infiles, output_file, log, context):
      
  
      options = context.get_options()
      if options.clean_final:
          image_suffix = '.pp-clean.png'
      elif options.deskew:
          image_suffix = '.pp-deskew.png'
      elif options.remove_background:
          image_suffix = '.pp-background.png'
      else:
          image_suffix = '.page.png'
      image = next(ii for ii in infiles if ii.endswith(image_suffix))
  
      pageinfo = get_pageinfo(image, context)
      if pageinfo.images and all(im.enc == 'jpeg' for im in pageinfo.images):
          log.debug(f'{page_number(image):4d}: JPEG input -> JPEG output')
          # If all images were JPEGs originally, produce a JPEG as output
          with Image.open(image) as im:
              # At this point the image should be a .png, but deskew, unpaper
              # might have removed the DPI information. In this case, fall back to
              # square DPI used to rasterize. When the preview image was
              # rasterized, it was also converted to square resolution, which is
              # what we want to give tesseract, so keep it square.
              fallback_dpi = get_page_square_dpi(pageinfo, options)
              dpi = im.info.get('dpi', (fallback_dpi, fallback_dpi))
  
              # Pillow requires integer DPI
              dpi = round(dpi[0]), round(dpi[1])
              im.save(output_file, format='JPEG', dpi=dpi)
      else:
          re_symlink(image, output_file, log)
docs: Selects a whole page image that we can show the user (if necessary)