python pyinsane应用
Posted myrj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python pyinsane应用相关的知识,希望对你有一定的参考价值。
import sys from PIL import Image try: import src.abstract as pyinsane except ImportError: import pyinsane.abstract as pyinsane def set_scanner_opt(scanner, opt, value): print("Setting %s to %s" % (opt, str(value))) try: scanner.options[opt].value = value except (KeyError, pyinsane.SaneException) as exc: print("Failed to set %s to %s: %s" % (opt, str(value), str(exc))) if __name__ == "__main__": steps = False args = sys.argv[1:] if len(args) <= 0 or args[0] == "-h" or args[0] == "--help": print("Syntax:") print(" %s [-s] <output file (JPG)>" % sys.argv[0]) print("") print("Options:") print(" -s : Generate intermediate images (may generate a lot of" " images !)") sys.exit(1) for arg in args[:]: if arg == "-s": steps = True args.remove(arg) output_file = args[0] print("Output file: %s" % output_file) print("Looking for scanners ...") devices = pyinsane.get_devices() if (len(devices) <= 0): print("No scanner detected !") sys.exit(1) print("Devices detected:") print("- " + "\\n- ".join([str(d) for d in devices])) print("") device = devices[0] print("Will use: %s" % str(device)) print("") source = \'Auto\' if (device.options[\'source\'].constraint_type == pyinsane.SaneConstraintType.STRING_LIST): if \'Auto\' in device.options[\'source\'].constraint: source = \'Auto\' elif \'FlatBed\' in device.options[\'source\'].constraint: source = \'FlatBed\' else: print("Warning: Unknown constraint type on the source: %d" % device.options[\'source\'].constraint_type) set_scanner_opt(device, \'resolution\', 300) set_scanner_opt(device, \'source\', source) set_scanner_opt(device, \'mode\', \'Color\') print("") print("Scanning ... ") scan_session = device.scan(multiple=False) if steps and scan_session.scan.expected_size[1] < 0: print("Warning: requested step by step scan images, but" " scanner didn\'t report the expected number of lines" " in the final image --> can\'t do") print("Step by step scan images won\'t be recorded") steps = False if steps: last_line = 0 expected_size = scan_session.scan.expected_size img = Image.new("RGB", expected_size, "#ff00ff") sp = output_file.split(".") steps_filename = (".".join(sp[:-1]), sp[-1]) try: PROGRESSION_INDICATOR = [\'|\', \'/\', \'-\', \'\\\\\'] i = -1 while True: i += 1 i %= len(PROGRESSION_INDICATOR) sys.stdout.write("\\b%s" % PROGRESSION_INDICATOR[i]) sys.stdout.flush() scan_session.scan.read() if steps: next_line = scan_session.scan.available_lines[1] if (next_line > last_line): subimg = scan_session.scan.get_image(last_line, next_line) img.paste(subimg, (0, last_line)) img.save("%s-%05d.%s" % (steps_filename[0], last_line, steps_filename[1]), "JPEG") last_line = next_line except EOFError: pass print("\\b ") print("Writing output file ...") img = scan_session.images[0] img.save(output_file, "JPEG") print("Done")
以上是关于python pyinsane应用的主要内容,如果未能解决你的问题,请参考以下文章
pyinsane 2 中的图像扫描给出了 StopIteration 错误
致命错误 C1083:无法打开包含文件:'atlbase.h' Pyinsane 包 [重复]