16位彩色图像与pyinsan

2024-10-04 01:28:20 发布

您现在位置:Python中文网/ 问答频道 /正文

pyinsane的扫描会话默认返回8位PIL图像的列表。这是真的,即使扫描是在16位模式下完成的(例如使用透明单元)。有没有什么方法可以从pyinsane中获得16位图像(我想PIL不支持这一点)或原始原始数据?在

以下是我当前使用的示例代码,并获得8位色深的图像:

import pyinsane.abstract as pyinsane
device = pyinsane.get_devices()[0]

device.options['resolution'].value = 1200
device.options['mode'].value = 'Color'
device.options['source'].value = 'Transparency Unit'

scan_session = device.scan(multiple=False)
try:
    while True:
        scan_session.scan.read()
except EOFError:
    pass
image = scan_session.images[0]

Tags: 方法代码图像示例列表原始数据scanpil
1条回答
网友
1楼 · 发布于 2024-10-04 01:28:20

你说得对,这是对枕头的限制。您可以在这里看到从raw到PIL图像的转换:https://github.com/openpaperwork/pyinsane/blob/master/pyinsane2/sane/abstract.py#L161

如果您真的需要这些额外的数据,我想唯一的选择是直接使用Sane API并进行自己的转换:

import pyinsane2.sane.rawapi

pyinsane.sane.rawapi.sane_init()
(...)
pyinsane.sane.rawapi.sane_exit()

不幸的是,这样做会使你失去Windows的可移植性(WIA支持),而且Pyinsane的这一部分根本没有文档记录。然而,精神错乱。理智。拉瓦皮为Sane C API提供了一些小的转换,使其更适合Pythony。所以我想您可以参考Sane文档来获取信息:http://www.sane-project.org/html/doc009.html。在

相关问题 更多 >