编程语言
首页 > 编程语言> > python twain 扫描

python twain 扫描

作者:互联网

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)

 

标签:rv,handle,Source,python,扫描,twain,ss,sm
来源: https://www.cnblogs.com/xkdn/p/14766867.html