Skip to main content

pytwain

This library allows acquiring images from various sources that support TWAIN protocol, e.g. scanners.

To install this library run:

pip install pytwain

Once installed you can run following sample Python script to acquire an image:

from io import BytesIO
import twain
import tkinter
from tkinter import ttk
import logging
import PIL.ImageTk
import PIL.Image

scanned_image = None


def scan():
    global scanned_image
    with twain.SourceManager(root) as sm:
        # this will show UI to allow user to select source
        src = sm.open_source()
        if src:
            src.request_acquire(show_ui=False, modal_ui=False)
            (handle, remaining_count) = src.xfer_image_natively()
            bmp_bytes = twain.dib_to_bm_file(handle)
            img = PIL.Image.open(BytesIO(bmp_bytes), formats=["bmp"])
            width, height = img.size
            factor = 600.0 / width
            # Storing PhotoImage in global variable to prevent it from being deleted once this function exits
            # since PhotoImage has a __del__ destructor
            scanned_image = PIL.ImageTk.PhotoImage(img.resize(size=(int(width * factor), int(height * factor))))
            frm.destroy()
            ttk.Label(root, image=scanned_image).pack(side="left", fill="both", expand=1)
        else:
            print("User clicked cancel")


logging.basicConfig(level=logging.DEBUG)
root = tkinter.Tk()
frm = ttk.Frame(root, padding=10)
frm.grid()
ttk.Button(frm, text="Scan", command=scan).grid(column=0, row=0)
root.mainloop()

Full documentation for the library located here.

This library uses ctypes to access TWAIN API, therefore it does not require compilation and can work with Pypi.

References

Release files for pytwain 2.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytwain 2.3.0
File Size Uploaded
pytwain-2.3.0.tar.gz 29.0 kB Details

Release files / pytwain-2.3.0.tar.gz

Download URL pytwain-2.3.0.tar.gz
Size 29.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c64a181369577ad600929ad64cb6ad702ec41fd8cf9886d785e3b87516e7b369
BLAKE2b-256 checksum
How to use checksums
594ee3206ca8de413b086b3a2e42b09cdaa7157d0e2841063433c16141dd3fdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.0

Release history Release notifications | RSS feed

This release

2.3.0 This release

1 release file

2.2.2

1 release file

2.2.1

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page