<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=DynamsoftDotNetTwain_FAQ</id>
	<title>DynamsoftDotNetTwain FAQ - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=DynamsoftDotNetTwain_FAQ"/>
	<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=DynamsoftDotNetTwain_FAQ&amp;action=history"/>
	<updated>2026-05-18T15:06:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://performiq.com/kb/index.php?title=DynamsoftDotNetTwain_FAQ&amp;diff=5196&amp;oldid=prev</id>
		<title>PeterHarding: Created page with &quot; Programming Questions  1. How can I acquire black-white images?  &lt;pre&gt; Twain1.OpenSource(); Twain1.IfShowUI = false; Twain1.IfDisableSourceAfterAcquire = true; Twain1.PixelTy...&quot;</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=DynamsoftDotNetTwain_FAQ&amp;diff=5196&amp;oldid=prev"/>
		<updated>2021-10-16T19:36:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; Programming Questions  1. How can I acquire black-white images?  &amp;lt;pre&amp;gt; Twain1.OpenSource(); Twain1.IfShowUI = false; Twain1.IfDisableSourceAfterAcquire = true; Twain1.PixelTy...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
Programming Questions&lt;br /&gt;
&lt;br /&gt;
1. How can I acquire black-white images?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Twain1.OpenSource();&lt;br /&gt;
Twain1.IfShowUI = false;&lt;br /&gt;
Twain1.IfDisableSourceAfterAcquire = true;&lt;br /&gt;
Twain1.PixelType = Dynamsoft.DotNet.TWAIN.Enums.TWICapPixelType.TWPT_BW;&lt;br /&gt;
Twain1.AcquireImage();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. How can I work without User Interface?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void BeginScan()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.OpenSource();&lt;br /&gt;
    Twain1.IfShowUI = false; // set without user interface&lt;br /&gt;
    Twain1.IfDisableSourceAfterAcquire = true;&lt;br /&gt;
&lt;br /&gt;
    Twain1.AcquireImage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
private void Twain1_OnPostTransfer()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.SaveAsBMP(&amp;quot;c:\temp.bmp&amp;quot;, 0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. How can I scan only a part of a picture?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Twain1.SelectSource();&lt;br /&gt;
Twain1.OpenSource();&lt;br /&gt;
Twain1.IfShowUI = false;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Set Image Layout&lt;br /&gt;
Twain1.Unit = Dynamsoft.DotNet.TWAIN.Enums.TWICapUNits.TWUN_INCHES; // INCHES&lt;br /&gt;
Twain1.SetImageLayout(0, 0, 5, 5);&lt;br /&gt;
&lt;br /&gt;
Twain1.AcquireImage();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. How can I call my scanner UI without acquiring an image?&lt;br /&gt;
This feature is supported by EnableSourceUI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Twain1.EnableSourceUI();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. How can I select a device without the device selection dialog?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Twain1.OpenSourceManager();&lt;br /&gt;
&lt;br /&gt;
int count = Twain1.SourceCount;&lt;br /&gt;
&lt;br /&gt;
for (short lngNum = 0; lngNum &amp;lt; count; lngNum ++)&lt;br /&gt;
{&lt;br /&gt;
    if (Twain1.SourceNameItems(lngNum) == &amp;quot;Specified device name&amp;quot;)&lt;br /&gt;
    {&lt;br /&gt;
        Twain1.SelectSourceByIndex (lngNum);&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// if can&amp;#039;t find the specified source, it&amp;#039;ll select default source&lt;br /&gt;
Twain1.AcquireImage();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. How can I disable the progress indicator dialog when I acquire images without UI?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Twain1.IfShowUI = false;&lt;br /&gt;
Twain1.IfDisableSourceAfterAcquire = true;&lt;br /&gt;
&lt;br /&gt;
Twain1.OpenSource();&lt;br /&gt;
Twain1.IfShowIndicator = false;&lt;br /&gt;
Twain1.AcquireImage();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. How can I set resolution in the X and Y directions separately?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Twain1.SelectSource();&lt;br /&gt;
Twain1.OpenSource();&lt;br /&gt;
&lt;br /&gt;
//Set XRESOLUTION current value.&lt;br /&gt;
Twain1.Capability = Dynamsoft.DotNet.TWAIN.Enums.TWCapability.ICAP_XRESOLUTION;&lt;br /&gt;
Twain1.CapType = Dynamsoft.DotNet.TWAIN.Enums.TWCapType.TWON_ONEVALUE;&lt;br /&gt;
Twain1.CapValue = 300;&lt;br /&gt;
if (Twain1.CapSet() == false)&lt;br /&gt;
    MessageBox.Show(&amp;quot;Failed to set the x-resolution.\r\n&amp;quot; + Twain1.ErrorString);&lt;br /&gt;
&lt;br /&gt;
//Set YRESOLUTION current value.&lt;br /&gt;
Twain1.Capability = Dynamsoft.DotNet.TWAIN.Enums.TWCapability.ICAP_YRESOLUTION;&lt;br /&gt;
Twain1.CapType = Dynamsoft.DotNet.TWAIN.Enums.TWCapType.TWON_ONEVALUE;&lt;br /&gt;
Twain1.CapValue = 200;&lt;br /&gt;
if (Twain1.CapSet() == false)&lt;br /&gt;
    MessageBox.Show(&amp;quot;Failed to set the y-resolution.\r\n&amp;quot; + Twain1.ErrorString);&lt;br /&gt;
&lt;br /&gt;
Twain1.AcquireImage();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. How can I upload acquired images to the Web server?&lt;br /&gt;
Dynamic .NET TWAIN supports FTP, HTTP Put and HTTP Post upload method. &lt;br /&gt;
The following is a http put method sample:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void BeginScan()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.AcquireImage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void Twain1_OnPostTransfer()&lt;br /&gt;
{&lt;br /&gt;
	if (Twain1.HTTPUploadThroughPut(&lt;br /&gt;
	&amp;quot;127.0.0.1&amp;quot;, 0, &amp;quot;httpUploadFileTemp.bmp&amp;quot;) == false)&lt;br /&gt;
	MessageBox.Show(Twain1.ErrorString);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. How to use ADF? We want to save each document in a separate file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int iDocumentCounter = 0;&lt;br /&gt;
&lt;br /&gt;
private void ADFScan()&lt;br /&gt;
{&lt;br /&gt;
    iDocumentCounter = 0;  //set initialize value&lt;br /&gt;
&lt;br /&gt;
    Twain1.OpenSource();&lt;br /&gt;
&lt;br /&gt;
    Twain1.IfShowUI = false;&lt;br /&gt;
    Twain1.IfDisableSourceAfterAcquire = true;&lt;br /&gt;
    if (Twain1.Duplex != Dynamsoft.DotNet.TWAIN.Enums.TWICapDuplex.TWDX_NONE)&lt;br /&gt;
        Twain1.IfDuplexEnabled = true; //enable duplex&lt;br /&gt;
&lt;br /&gt;
    if (Twain1.IfFeederEnabled)&lt;br /&gt;
    {&lt;br /&gt;
        Twain1.XferCount = -1;&lt;br /&gt;
        Twain1.IfAutoFeed = true; //auto feed &lt;br /&gt;
&lt;br /&gt;
        if (Twain1.IfFeederLoaded)&lt;br /&gt;
            Twain1.AcquireImage();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void Twain1_OnPostTransfer()&lt;br /&gt;
{&lt;br /&gt;
    iDocumentCounter = iDocumentCounter + 1;&lt;br /&gt;
&lt;br /&gt;
    if (!Twain1.SaveAsBMP(@&amp;quot;c:\&amp;quot; + iDocumentCounter.ToString() + &amp;quot;.bmp&amp;quot;, 0))&lt;br /&gt;
            MessageBox.Show(Twain1.ErrorString);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. How can I work with SSL? &lt;br /&gt;
You can use the IfSSL property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Twain1.HTTPPort = 80; &lt;br /&gt;
Twain1.IfSSL = false; // if 80 is the port number of non-secure port&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* &lt;br /&gt;
Twain1.HTTPPort = 443; &lt;br /&gt;
Twain1.IfSSL = true; // if 443 is the port number of secure port&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
Twain1.HTTPUploadThroughPost(&amp;quot;127.0.0.1&amp;quot;, 0, &amp;quot;/SaveToFile.php&amp;quot;, &amp;quot;imageData.jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
if (Twain1.ErrorCode != Dynamsoft.DotNet.TWAIN.Enums.ErrorCode.Succeed)&lt;br /&gt;
    MessageBox.Show(Twain1.ErrorString);&lt;br /&gt;
else //succeded&lt;br /&gt;
    MessageBox.Show(&amp;quot;Successful&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. How can I add a new scanned image to an existing multi-page TIFF file?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void Scan()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.AcquireImage();&lt;br /&gt;
}&lt;br /&gt;
        &lt;br /&gt;
private void Twain1_OnPostTransfer()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.CloseSource();&lt;br /&gt;
&lt;br /&gt;
    Twain1.IfTiffMultiPage = true;&lt;br /&gt;
    Twain1.SaveAsTIFF (@&amp;quot;C:\SaveAsTIFF.tif&amp;quot;, 0);&lt;br /&gt;
&lt;br /&gt;
    if (Twain1.ErrorCode != Dynamsoft.DotNet.TWAIN.Enums.ErrorCode.Succeed)&lt;br /&gt;
        MessageBox.Show(Twain1.ErrorString);&lt;br /&gt;
    else &lt;br /&gt;
        MessageBox.Show(&amp;quot;Successful&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. How can I rotate an image before I save it? &lt;br /&gt;
You can use the RotateLeft property and the RotateRight property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void Scan()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.AcquireImage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void RotateLeft()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.RotateLeft(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void RotateRight()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.RotateRight(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void Rotate()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.Rotate(0, 45.0, true, &lt;br /&gt;
	Dynamsoft.DotNet.TWAIN.Enums.DWTInterpolationMethod.Bicubic); &lt;br /&gt;
}&lt;br /&gt;
Also, you can use the ShowImageEditor method.&lt;br /&gt;
&lt;br /&gt;
private void Scan()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.AcquireImage();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void Twain1_OnPostTransfer()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.CloseSource();&lt;br /&gt;
&lt;br /&gt;
    Twain1.ShowImageEditor();&lt;br /&gt;
// You need to save the rotated image in the image editor before closing it    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
13. How can I view a specified image if there are several images in buffer? &lt;br /&gt;
You can view a specified image or go through all the images in buffer with clicking &amp;quot;NextImage&amp;quot; or &amp;quot;PreImage&amp;quot; buttons.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void Next()&lt;br /&gt;
{&lt;br /&gt;
    if (Twain1.HowManyImagesInBuffer == 0)&lt;br /&gt;
        MessageBox.Show(&amp;quot;There is no image in buffer&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    Twain1.CurrentImageIndexInBuffer = (short)(Twain1.CurrentImageIndexInBuffer + 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
private void Previous()&lt;br /&gt;
{&lt;br /&gt;
    if (Twain1.HowManyImagesInBuffer == 0)&lt;br /&gt;
        MessageBox.Show(&amp;quot;There is no image in buffer&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    Twain1.CurrentImageIndexInBuffer = (short)(Twain1.CurrentImageIndexInBuffer - 1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. How can I do a duplex scan?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void DuplexScan()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.SelectSource();&lt;br /&gt;
    Twain1.OpenSource();&lt;br /&gt;
&lt;br /&gt;
    Twain1.IfDuplexEnabled = true; //enable duplex&lt;br /&gt;
    Twain1.XferCount = 2;&lt;br /&gt;
    Twain1.MaxImagesInBuffer = 2;&lt;br /&gt;
&lt;br /&gt;
    Twain1.AcquireImage();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. How can I scan an inverted image? &lt;br /&gt;
You can use the PixelFlavor property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private void Scan()&lt;br /&gt;
{&lt;br /&gt;
    Twain1.PixelFlavor = TWICapPixelFlavor.TWPF_CHOCOLATE;&lt;br /&gt;
    Twain1.AcquireImage();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:DynamicDotNetTwain]]&lt;/div&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
</feed>