スキャナーから入力を取得してjpgとして保存できるPythonでプログラムを作成したいと思います。どうやって始めたらいいのかわからない。助けてください。
4 に答える
6年が経ち、今日ここに来て同じ質問の答えを探しました。
現在受け入れられている回答のPysaneとpython-imagescannerは、残念ながらアクティブではなくなりましたが、さらに検索した後、最近はより良いオプションのように思われるlibinsaneを見つけました。
Windowsでは、調べたいモジュールはPython TWAINモジュールと呼ばれますが、Linux(およびMacだと思います)では、pysaneを調べる必要があります。
これを掘り下げているので、これら2つのアプローチを共通のライブラリにラップしようとするpython-imagescannerというプロジェクトがあるようです。
imagescannerのドキュメントから
Getting access to a scanner device: from imagescanner import ImageScanner # instantiate the imagescanner obj iscanner = ImageScanner() # get all available devices scanners = iscanner.list_scanners() # choose one of the devices scanner = scanners[0] # scan your file (returns a PIL object) scanner.scan()
私も6年後に検索しましたが、これがWIA互換のデジタルカメラからの画像のキャプチャに非常に役立ちます。を使用しwin32com.client
ます。
それは私のスキャナーキャノンDR-C240で動作しました。
コード:
import win32com.client, time, os
WIA_COM = "WIA.CommonDialog"
WIA_DEVICE_UNSPECIFIED = 0
WIA_DEVICE_CAMERA = 2
WIA_INTENT_UNSPECIFIED = 0
WIA_BIAS_MIN_SIZE = 65536
WIA_BIAS_MAX_QUALITY = 65536
WIA_IMG_FORMAT_PNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"
WIA_COMMAND_TAKE_PICTURE="{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}"
def acquire_image_wia():
wia = win32com.client.Dispatch(WIA_COM) # wia is a CommonDialog object
dev = wia.ShowSelectDevice()
for command in dev.Commands:
if command.CommandID==WIA_COMMAND_TAKE_PICTURE:
foo=dev.ExecuteCommand(WIA_COMMAND_TAKE_PICTURE)
i=1
for item in dev.Items:
if i==dev.Items.Count:
image=item.Transfer(WIA_IMG_FORMAT_PNG)
break
i=i+1
fname = 'wia-test.png'
if os.path.exists(fname):
os.remove(fname)
image.SaveFile(fname)
os.chdir("c:/temp")
acquire_image_wia()
コードがほとんどない単純なアプローチが必要な場合に備えて、ここで他のアプローチについて言及するだけです。それ以外の場合は、上記の@Marceloの回答を使用できます。
アイデアは、ドキュメントのスキャンにWindowsFAXとスキャンを使用することです。これが同じためのPythonのコードです。
import os
os.system("WFS")
WindowsFAXとスキャンが開きます。これで、ドキュメントをスキャンできます。
幸運を!!