def multiScan(self):
""" Scan and return an array of PIL objects
If no images, will return an empty array
"""
self.scanner.RequestAcquire(0, 1)
images = \[\]
handles = \[\]
try:
handle, more = self.scanner.XferImageNatively()
handles.append(handle)
except twain.excDSTransferCancelled:
return \[\]
while more != 0:
try:
handle, more = self.scanner.XferImageNatively()
handles.append(handle)
except twain.excDSTransferCancelled:
more = 0
for handle in handles:
images.append(Image.open(StringIO(twain.DIBToBMFile(handle))))
twain.GlobalHandleFree(handle)
return images
import twain
sm = twain.SourceManager(0)
ss = sm.OpenSource()
for i in range(3): //for ex. 3 documents in the scanner device
ss.RequestAcquire(0,0)
rv = ss.XferImageNatively()
if rv:
(handle, count) = rv
twain.DIBToBMFile(handle, '{i}.bmp'.format(i))
import twain
sm = twain.SourceManager(0)
sm.SetCallback(onTwainEvent)
ss = sm.OpenSource()
index = 0
for i in range(3): //for ex. 3 documents in the scanner device
ss.RequestAcquire(0,0)
def onTwainEvent(event):
if event == twain.MSG_XFERREADY:
saveImage()
def saveImage():
rv = ss.XferImageNatively()
if rv:
(handle, count) = rv
twain.DIBToBMFile(handle, '{index}.bmp'.format(index))
index += 1
import twain
sm = twain.SourceManager(0)
ss = sm.OpenSource()
ss.RequestAcquire(0,0)
rv = ss.XferImageNatively()
if rv:
(handle, count) = rv
twain.DIBToBMFile(handle, 'image.bmp')
1、降低扫描分辨率、能用灰度就不用彩色、能用24位彩色就不用32位彩色
2、使用自动进纸器 3、采用高压缩比的图像格式,能用jpg就不用tiff,能用tiff就不用bmp Source.GetCapabilityDefault(CapabilityCode) Source.GetCapability(CapabilityCode) Source.GetCapabilityCurrent(CapabilityCode) Source.SetCapability(CapabilityCode) Source.ResetCapability(CapabilityCode) Source.GetImageInfo():返回XResolution, YResolution, ImageWidth, ImageLength, SamplesPerPixel, BitsPerSample, BitsPerPixel, Planar, PixelType, Compression Source.GetImageLayout():返回((left, top, right, bottom) document_number, page_number, frame_number)
One of the CAP_* (Generic Capabilities), ICAP_ (Image Capabilities)
手机扫一扫
移动阅读更方便
你可能感兴趣的文章