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