天道酬勤,学无止境

Are memory issues common when scanning 2400 DPI pictures with TWAIN?

I'm using twaindotnet to scan an image with 2400 DPI. Whenever I scan a full page in color I get a message that there is not enough memory to perform this action. I tried it on a different computer with around 4 GB of ram and got the same error message.

If I scan the image as black and white or gray-scale I don't get any error and everything is working fine.

Is that a problem that is related to the scanner driver (Canon 9000F) or is this a general TWAIN problem?

标签

评论

gray-scale images have a bit depth varying from 2 to 8. for an image of legal size and of 2400 dpi, the size can be 163 MB ~ 654 MB.

color images have higher bit depth. take 32 for example, the image of the same size and dpi can be around 2.62 GB. plus the memory occupied by other applications, 4 GB memory likely runs out.

File Size = (height x width x bit depth x dpi2) / 8

  • dpi2 means dpi square

Looks like that Twain library is scanning to memory, the Twain specification also has a file transfer mode which is generally used for very large images (ICAP_XFERMECH). Twaindotnet may allow you to choose the file transfer mode when scanning.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 吐温问题:是否可以从进纸器中仅扫描一个文档?(Twain question: is it possible to scan just one document from feeder?)
    问题 我正在使用http://www.codeproject.com/KB/dotnet/twaindotnet.aspx中的代码 我有一个问题,因为twain仅在扫描了Feeder中的所有文档后才返回控制权。 如果我扫描20个或更多文档,这会导致较高的内存使用率。 我想到了一次从进纸器中仅扫描一个文档,然后保存图像并再次循环调用api。 我将cap_xfercount设置为1,但这似乎无济于事: TwCapability cap = new TwCapability(TwCap.XferCount, 1); rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap); 我只需要从进纸器中扫描一份文档,该怎么做? 任何建议表示赞赏。 回答1 对不起,我对twaindotnet项目不熟悉,但是我在通过TWAIN进​​行文档扫描方面确实有很多经验。 首先要注意:并非所有文档进纸器都可以单页模式进纸; 一些重要的扫描仪系列一经启动,便始终扫描进纸器中的所有内容。 而且,无论标准说什么,相当多的TWAIN驱动程序都不支持XFERCOUNT = 1。 如果您试图通过强迫扫描仪扫描“一页作业”来解决问题,那么您将只能使用(不确定的)支持此功能的一组扫描仪。 TWAIN标准只是不需要此功能。 (但是,是的
  • 如何使用c#检查程序中的图片质量?(How can I check out the picture quality in program using c#?)
    问题 我想使用我的应用程序检查照片是否适合打印。我该怎么做?我对照片质量不太了解?每张照片的分辨率是否相同? 回答1 我认为您可以确定地检查打印质量的唯一因素(因为其他因素是主观的),是图像的分辨率与预期的打印尺寸。 如果您有其他切实的要求,例如图像必须是彩色的,而不是黑白的,您也可以检查一下。 但是,试图确定图像是否太模糊、对比度低等可能是徒劳的,因为您永远不知道图像是否有意为之。 一个普遍的经验法则是,打印时每英寸至少应该有 240 个点,300 个点更好。 当然,对于高质量的打印机,比这更高的分辨率可以产生更好的结果,如果您要打印非常高的细节,例如精美的文本,您可能需要 600dpi 及以上。 因此,要使用 240 dpi 的最小图形打印 8" x 10" 图像,您需要至少 1920 x 2400 像素(总共 4,608,000 像素,或约 4.5 兆像素)的图像。 如果您决定在打印 8" x 10" 时至少需要 300dpi,那么您需要至少 2400 x 3000 像素的图像,即大约 7 兆像素。 提高到 600dpi? 在这种情况下,您将需要大约 28 兆像素的图像。 例子: using System; using System.Drawing; namespace ConsoleApplication1 { class Program { static void
  • 使用 TWAIN 和 BackgroundWorker 进行 TwainDotNet 扫描(TwainDotNet Scanning using TWAIN with BackgroundWorker)
    问题 有没有人试过用 TwainDotNet 来扫描来自 .NET 的 TWAIN API 调用? 尽管它通常运行良好,但当与使用 MVVM 的 WPF 应用程序一起使用时,我会遇到一些问题。 基本上,我从服务调用 Twain 扫描函数,而服务又使用 BackgroundWorker。 List<BitmapSource> bitmapSources = new List<BitmapSource>(); Twain twain = new Twain(new WpfWindowMessageHook(_window)); ScanSettings settings = new ScanSettings() { ShowTwainUI = false }; using (BackgroundWorker worker = new BackgroundWorker()) { worker.DoWork += (sndr, evnt) => { AutoResetEvent waitHandle = new AutoResetEvent(false); EventHandler scanCompleteHandler = (se, ev) => { waitHandle.Set(); }; twain.ScanningComplete += scanCompleteHandler
  • How can I scan and transfer images from a document feeder asynchronously
    Which parts of the communication with TWAIN can be put into another thread, e.g. a BackgroundWorker? Or: Is it possible to split the loop that handles the image transfer? Some scanner drivers scan all images before returning to the calling application which forces the application to handle all images at once. This results in e.g. OutOfMemoryException or weird behavior in my WPF application when suddenly all events (raised after every scanned image) have to be handled at once. Additionally the application hangs until the transfer was completed. I am using TwainDotNet: http://code.google.com/p
  • TwainDotNet Scanning using TWAIN with BackgroundWorker
    Has anyone tried TwainDotNet for scanning with TWAIN API calls from .NET? Though it works well usually I've some issues with it when used along with WPF application using MVVM. Basically I'm calling Twain scanning functions from a Service, which in turn uses a BackgroundWorker. List<BitmapSource> bitmapSources = new List<BitmapSource>(); Twain twain = new Twain(new WpfWindowMessageHook(_window)); ScanSettings settings = new ScanSettings() { ShowTwainUI = false }; using (BackgroundWorker worker = new BackgroundWorker()) { worker.DoWork += (sndr, evnt) => { AutoResetEvent waitHandle = new
  • hp打印机没有右键扫描_hp大幅面打印机多少钱 惠普打印机加墨教程【详细介绍】...
    在我们的日常生活中, 打印机 潜移默化的成为了必不可少的一个设备。无论是上班族还是学生党,他们平时都要用到打印机,从而方便自己平时的办公与学习。目前市场上的打印机品牌与类型较多,相信不少人都听说过惠普大幅面打印机了。那么下面小编就来给大 家具 体说说hp大幅面打印机报价 、 惠普打印机加墨教程 以及 hp大幅面打印机打印头清洗 三个方面的内容。 一、hp大幅面打印机报价 1、惠普T790A1,打印分辨率:2400×1200dpi,打印幅面:24英寸,打印长度:91m,墨盒数量:6色墨盒,价格:15800元左右。 2、惠普PageWide XL4000,打印分辨率:1200×1200dpi,打印幅面:1016mm,墨盒数量:4色墨盒,价格:400000元左右。 3、惠普Designjet T520,打印分辨率:2400×1200dpi,墨盒数量:4色墨盒,价格:19500元左右。 4、惠普T2300,打印分辨率:2400×1200dpi,打印宽度:44英寸,打印幅面:1118mm,墨盒数量:6色墨盒,价格:85000元左右。 5、惠普Z5200,打印分辨率:2400×1200dpi,打印宽度:44英寸,打印幅面:279-1616mm,打印长度:216-1118m,价格:45000元左右。 6、惠普T795B0+,打印分辨率:2400×1200dpi,打印幅面:44英寸,打印长º
  • 使Java和TWAIN完美地结合在一起[关闭](Getting Java and TWAIN to play together nicely [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我正在构建一个应用程序,以直接从TWAIN扫描仪扫描到Java小程序。 我已经知道Morena和JTwain,但它们要花钱。 我需要免费。 我可以用JNI重新发明轮子,但似乎有人已经作为FOSS工具做到了这一点。 是否有人熟悉免费的工具,该工具可以使Java小程序直接从TWAIN扫描仪读取? 回答1 从C / C ++之外的任何其他方法调用TWAIN API都会很麻烦,它完全依赖于您必须在内存中精确复制的复杂C结构。 如果您只需要基本的扫描,则可以使用GitHub网站之类的名称来调用我的旧免费“ EZTwain Classic” DLL(适用于eztw32.dll的Google) 回答2 嗯。 我可能可以检查的地方有一些自制软件,但是现在:在我们公司,我们基本上放弃了这个问题,并实施了一个(不幸的是仅获胜)ActiveX解决方案:网站链接 回答3 我实际上已经购买了Chestysoft ActiveX控件。 使用了大约三年。 效果很好,但与所有ActiveX一样,您只能使用IE。 而这个只有32位。 我现在正在考虑使用Flash方法。 由于闪光灯可以从相机捕获,所以不能从扫描仪捕获。 如果我还记得,我会报告发现的问题
  • Twain question: is it possible to scan just one document from feeder?
    I am playing with the code from http://www.codeproject.com/KB/dotnet/twaindotnet.aspx I am having a problem because twain returns control only after all documents in feeder are scanned. This leads to high memory usage if I scan 20 or more documents. I thought of scanning just one document at a time from the feeder and saving the image and calling the api again in a loop. I am setting cap_xfercount to 1 but this does not seem to help: TwCapability cap = new TwCapability(TwCap.XferCount, 1); rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap); What do I need to do to scan
  • TWAIN德尔福扫描组件(TWAIN scanning components for Delphi)
    问题 我需要将TWAIN扫描添加到Delphi应用程序中,并且在定位现成的组件时遇到了麻烦。 我下载了TDelphiTwain,但是在Windows Vista的D2010中使用TDelphiTwain时,它似乎无法识别系统上的任何Twain源。 我还尝试了MCM的用于Delphi的Twain Toolkit的试用版,该版本具有当前更新的优势(DelphiTwain的最新更新是2004年),但是Twain Toolkit甚至无法在我的系统上编译(我认为某些DCU已淘汰)日期)。 谁能建议一种将TWAIN扫描到我的Delphi应用程序中的简单方法? 更新:使用vcldeveloper对DelphiTwain的更新(见下文),我能够使它工作。 另外,我还发现Envision图像库支持Twain扫描以及协助处理多页TIFF,并且已更新为与D2010兼容。 下面的Late Breaking UPDATE VCLDeveloper的代码可以正常工作。 但是,我选择了Envision库,该库具有轻松创建多页TIFF文件的功能。 我在几个小时内就完成了Envision扫描,包括多页文件处理。 回答1 我将DelphiTWAIN更改为可与Delphi 2009和2010一起使用。您可以从此处下载源代码:http://www.kluug.ne​​t/delphitwain.php 其他链接在这里
  • 字节跳动面试官:一张图片占据的内存大小是如何计算
    最近封装了个高斯模糊组件,正好将图片相关的理论基础也梳理了下,所以,这次就来讲讲,在 Android 中,怎么计算一张图片在内存中占据的大小,如果要优化,可以从哪些方向着手。 提问 阅读本篇之前,先来想一些问题: Q1:一张 png 格式的图片,图片文件大小为 55.8KB,那么它加载进内存时所占的大小是多少? Q2:为什么有时候,同一个 app,app 内的同个界面,界面上同张图片,但在不同设备上所耗内存却不一样? Q3:同一张图片,在界面上显示的控件大小不同时,它的内存大小也会跟随着改变吗? Q4:图片占用的内存大小公式:图片分辨率 * 每个像素点大小,这种说法正确吗,或者严谨吗? Q5:优化图片的内存大小有哪些方向可以着手? 正文 在 Android 开发中,经常需要对图片进行优化,因为图片很容易耗尽内存。那么,就需要知道,一张图片的大小是如何计算的,当加载进内存中时,占用的空间又是多少? 先来看张图片: 这是一张普通的 png 图片,来看看它的具体信息: 图片的分辨率是 1080*452,而我们在电脑上看到的这张 png 图片大小仅有 55.8KB,那么问题来了: 我们看到的一张大小为 55.8KB 的 png 图片,它在内存中占有的大小也是 55.8KB 吗? 理清这点蛮重要的,因为碰到过有人说,我一张图片就几 KB,虽然界面上显示了上百张,但为什么内存占用却这么高?
  • 关于计算机图像基础知识的整理
    1.色彩深度: 1位:2种颜色,单色光,黑白二色,用于compact Macintoshes。 2位:4种颜色,CGA,用于gray-scale早期的NeXTstation及color Macintoshes。 3位:8种颜色,用于大部分早期的电脑显示器。 4位:16种颜色,用于EGA及不常见及在更高的分辨率的VGA标准,color Macintoshes。 5位:32种颜色,用于Original Amiga chipset。 6位:64种颜色,用于Original Amiga chipset。 8位:256种颜色,用于最早期的彩色Unix工作站,低分辨率的VGA,Super VGA,AGA,color Macintoshes。 12位:4,096种颜色,用于部分硅谷图形系统,Neo Geo,彩色NeXTstation及Amiga系统于HAM mode。 16位:65,536种颜色,用于部分color Macintoshes。 24位:16,777,216种颜色,真彩色,能提供比肉眼能识别更多的颜色,用于拍摄照片。 灰阶:有256种灰色(包括黑白)。若以24位模式来表示,则RGB的数值均一样,例如(200,200,200)。 另外有高动态范围影像(High Dynamic Range Image),这种影像使用超过一般的256色阶来储存影像,通常来说每个像素会分配到32+32
  • C# 释放 IntPtr 引用的内存(C# deallocate memory referenced by IntPtr)
    问题 我正在使用一些非托管代码,这些代码将指针 (IntPtr) 返回到大型图像对象。 我使用引用,但在完成图像后,我需要释放指针引用的内存。 目前,释放内存的唯一方法是关闭我的整个应用程序。 我需要能够从我的应用程序内部释放该内存。 这是分配内存的调用。 hbitmap是返回的需要释放的指针。 [DllImport("twain_32.dll", EntryPoint = "#1")] public static extern TwainResult DsImageTransfer( [In, Out] Identity origin, [In] Identity dest, DataGroup dg, DataArgumentType dat, Message msg, ref IntPtr hbitmap); 回答1 这将取决于该内存的分配方式。 Marshal 类具有释放通过常见互操作分配模式(如 FreeCoTaskMem)分配的内存的方法。 如果非托管代码使用非互操作兼容的分配方式,则您无法与其进行互操作。 更新 如果我敢猜测,您在 twain_32.dll 中调用的函数 #1 是 TWAIN 提供程序中的 DS_ENTRY 函数。 Twain 规范调用了内存资源管理协议: TWAIN 2.0 及更高版本中的内存管理 TWAIN 需要应用程序和源来管理彼此的内存。
  • TWAIN scanning components for Delphi
    I need to add TWAIN scanning to an Delphi application and am having trouble locating an off-the-shelf component to do so. I downloaded TDelphiTwain but, when used in D2010 on Windows Vista, it does not appear to recognize any Twain sources on my system. I also tried the trial version of Twain Toolkit for Delphi from MCM which has the advantage of being currently updated (DelphiTwain's last update was 2004), but the Twain Toolkit will not even compile on my system (I think some of the DCUs are out of date). Can anyone suggest a simple method of getting TWAIN scanning into my Delphi application
  • 扫描文档(TIFF和PDF)的扫描仪的最佳设置(Best setting for scanners for scanning documents(TIFF and PDF) [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 4年前关闭。 改善这个问题 为了扫描文档(黑白文本)并将其用于OCR转换(以获得最佳结果),最佳的扫描仪设置是什么?PDF和TIFF格式的标准设置和规范是什么? 回答1 对于OCR,最佳扫描设置为: 常规文本的分辨率为300 dpi,特别小的字体的分辨率为400 dpi(精细打印) 黑白表示文本,灰度表示小字体,图片颜色 TIFF格式。 Group4用于黑白(非常小的文件大小)。 如果需要颜色,请使用未压缩(非常大的文件大小)。 某些OCR技术可能有特殊的偏好,这可能会有所帮助,但它们通常是次要的。 回答2 出于OCR的目的,我将以300DPI,黑白或灰度以及未压缩的TIFF或PNG格式扫描文档。 回答3 虽然300DPI最适合“完美”的输入,但是如果您使用的是不完美的输入(例如,来自打字机或点矩阵打印机的输入),则高分辨率实际上会使tesseract失效。 在这种情况下,最好使用较低的分辨率来隐藏缺陷。 例如,使用点矩阵打印机,在150dpi时,我得到的效果明显好于300dpi。 回答4 如果您想要一个一般性的答案,那么300 DPI就是很好的选择。 通常,黑白图像的OCR效果最佳,如果图像质量较差,则可以通过应用图像处理来改善它。 另外
  • 是否可以重定向用户以启动扫描仪应用程序?(Is it possible redirect user to launch scanner application?)
    问题 我正在编写一个应用程序来使用python3-django-1.8.1显示上传的文档。 我们还希望允许用户扫描文档。 如您所知,javascript 中有一个打印对话框。 window.print() 浏览器是否支持扫描文档? 是否可以使用 javascript/python 在客户端机器上启动扫描仪应用程序? 像: Windows 机器上的“Windows 传真和扫描” linux等上的“简单扫描”或无论客户端的相应操作系统上的默认扫描仪应用程序如何。 任何第三方 python 应用程序/js 插件允许扫描文档? 回答1 我对图像扫描功能不太熟悉,但我在使用条形码扫描仪时遇到了类似的问题。 您实际上不能期望与打印类似的东西,因为打印是浏览器启用的功能,而扫描是典型浏览器不具备的功能。 而且,JS 没有直接访问外设的能力。 如果这个页面被手机浏览会发生什么? (来自相机的扫描会很棒,但从未听说过类似的东西)。 话虽如此,还有一个scanner.js SDK: 扫描仪.js 使任何网页都可以在大多数桌面浏览器(如 IE、Chrome、Firefox 等)中使用 JavaScript 从扫描仪获取图像。 在大多数情况下,不需要安装软件,用户可以享受出色的扫描体验。 还有一个 Twain SDK: Dynamic Web TWAIN 是一款基于 TWAIN 的扫描 SDK 软件,专为
  • 可以听双胞胎(也许是 WIA)扫描仪吗?(Can one listen a twain (Maybe WIA) scanner?)
    问题 我正在评估 VintaSoft .net 控件和 Atalasoft DotTwain Image Capture。 我对大多数定义和关键字感到非常但非常迷茫。 所以我问这个是因为我认为我在拉拉土地上。 是否可以聆听或让扫描仪告诉我的应用程序有扫描图像,我可以处理它? 这个想法是让一个 winservice 等待扫描仪扫描某些东西,并在发生这种情况时处理图像。 回答1 我只使用了 TWAIN 和 WIA 的本机接口,所以我不能保证它们之上的这些其他层。 但是,对于 TWAIN,确实存在一些允许通知应用程序捕获数据的机制。 我相信这是用 STI.dll 处理的,STI.dll 是 Windows 2000+ 上可用的旧库。 查找 StiCreateInstance 以获取更多信息。 如果选择走WIA路线,那就简单多了。 您可以注册以接收事件,例如“扫描”按钮或“图像创建”事件。 然后您需要做的就是处理这些事件以获取图像。 其中最困难的部分是找到实现您想要的功能的硬件。 Microsoft 有一个 WIA 自动化库,可以使许多这些任务变得更加简单。 它可以被脚本语言使用。 回答2 我们最近将 TWAIN 整合到我们的一款应用程序中。 我们研究了 WIA,但最终 TWAIN 更加灵活,可以连接到 VRS(Virtual ReScan)等应用程序。 最后它是“拉”
  • 通过Web应用程序与最终用户的扫描仪接口(Web /扫描仪集成)(Interfacing with the end-user's scanner from a webapp (web/scanner integration))
    问题 在典型的文档处理Web应用程序中考虑以下扫描过程: 用户使用连接到他/她的计算机的扫描仪扫描文档扫描的图像以BMP / JPG / TIF / PNG文件的形式保存在用户计算机上用户在Web应用程序中点击文件上传“浏览..”按钮向用户显示一个文件对话框,他/她使用该对话框来定位扫描的图像用户单击“上传图像”,然后将扫描的图像上传到存储该图像的服务器 这个过程非常复杂,我想减少步骤数量,以使该过程更人性化/更简单。 在理想情况下,上述步骤将仅由一个步骤代替,在该步骤中,当您说“扫描并上传”时,该过程将自动从web应用程序触发文档扫描,完整的文档扫描和上传结果图像。 不幸的是,“网络/扫描仪集成”状态似乎很差,所以这可能是乌托邦。 您将如何解决这个问题? 更具体地说,您将如何减少所描述用例中涉及的步骤数? 回答1 如果您的目标受众是运行Windows和IE,并且您不介意花费几美元,那么Atalasoft的某些组件可以满足您的需求。 回答2 好了,已经过去了两年,所以这里是刚加入我们的人们的最新技术更新。 Dynamsoft和Atalasoft都具有与任何服务器端堆栈兼容的多浏览器Web扫描工具包。 两者都要求用户安装ActiveX(在IE中)或NPAPI插件(Chrome,Firefox等)才能通过TWAIN API访问扫描仪。 显然,如果您有时间或预算有限,则可以创建自己的插件
  • What is the state of TWAIN on the Macintosh today?
    I'm currently working on a project where we want to interface with TWAIN scanners on both the PC (Windows) and the Macintosh. On Windows, we basically have everything squared away and the code works successfully with the vast majority of scanners. On Mac OS X, we also basically have everything working and with the main scanner we used to develop the application with works perfectly, but we're not having a ton of luck with other scanners. As a byproduct of development on this project, we have a fair number of scanners from various manufacturers on-hand to test with. The results vary wildly: The
  • 在内存中有一个图像文件缓冲区,创建缩略图的最快方法是什么?(Having an image file buffer in memory, what is the fastest way to create its thumbnail?)
    问题 尝试创建一个针对快速扫描仪优化的图像采集应用程序(它可以以 150 ppm 的速度为每张纸提供多达 6 个压缩图像 [彩色+灰色+二进制][正面+背面])我遇到了一些速度问题。 使用 TWAIN 技术和内存缓冲区传输模式 (TWSX_MEMORY),我从扫描仪接收图像缓冲区(作为加载到内存中的 JPEG 或 TIFF 文件)并将其保存到我的应用程序目标路径。 如果我不想创建缩略图,我的应用程序不会对扫描仪造成速度损失,但是如果我想这样做,由于我这样做的方式(将缓冲区保存到我的 C++ TWAIN 处理 dll 中的文件中,通知我的 .NET 主机应用程序使用函数指针的目标文件路径,在 C# 中打开图像文件并创建缩略图图像),我的应用程序会导致扫描速度极快的损失。 我尝试了一些优化,例如在单独的线程中执行加载阶段并将非托管图像文件缓冲区发送到 .NET 主机并尝试在不安全的上下文 (UnmanagedMemoryStream) 中加载它并创建缩略图。 但并没有显着提高速度。 所以我的问题是: 在内存中有一个图像文件缓冲区(例如,没有嵌入缩略图的 24 位 JPEG 压缩),是否有一种快速直接的方法可以从中创建缩略图图像? 在这种情况下,您建议使用什么最快的方法来创建缩略图? 回答1 如果它是 JPEG 图像,您可以简单地丢弃大部分 DCT 数据,并仅使用 DCT
  • Having an image file buffer in memory, what is the fastest way to create its thumbnail?
    Trying to create a an image acquiring application optimized for a fast scanner (which can provide up to 6 compressed images [color+gray+binary][front+rear] for each paper at speed of 150 ppm) I have some speed issues. Using TWAIN technology and memory buffer transfer mode (TWSX_MEMORY) I receive image buffer (as JPEG or TIFF file loaded in memory) from scanner and save it to my application destination path. If I do not want to create thumbnails, my application causes no speed loss for the scanner, but if I want to, due the way I do it (saving buffer into a file in my C++ TWAIN handling dll