Resources Base
Generally, there are two ways to automatically deskew an image.
Applicable only to compatible TWAIN scanners
There is a standard TWAIN capability called ICAP_AUTOMATICDESKEW
which, when enabled, does the deskewing of all scanned images automatically. If your scanner supports this capability, you can enable the functionality through DWT
using the API IfAutomaticDeskew
DWObject.OpenSource();
DWObject.IfAutomaticDeskew = true;
The function
deskew()
below is applicable to all platforms. The eventOnPostTransferAsync
is only triggered during scanning
function deskew(index) {
DWObject.GetSkewAngle(
index,
function(angle) {
console.log("skew angle: " + angle);
DWObject.Rotate(index, angle, true,
function() {
console.log("Successfully deskewed an image!");
},
function(errorCode, errorString) {
console.log(errorString);
}
);
},
function(errorCode, errorString) {
console.log(errorString);
}
);
}
DWObject.RegisterEvent("OnPostTransferAsync", function(info) {
deskew(DWObject.ImageIDToIndex(info.imageId));
});
By default, when you scan or load images, they are appended to the end of the image array in buffer. However, in some business scenarios, the user might want to insert these new images to a specified index. Unfortunately, DWT
doesn’t provide a native method for that. The following code snippet shows how it can be done
function acquireToIndex(index) {
DWObject.IfAppendImage = false;
DWObject.CurrentImageIndexInBuffer = index;
DWObject.RegisterEvent('OnPostTransfer', function() {
DWObject.CurrentImageIndexInBuffer++;
});
DWObject.RegisterEvent('OnPostAllTransfers', function() {
DWObject.IfAppendImage = true;
});
DWObject.AcquireImage();
}
function loadToIndex(index) {
var oldCount = DWObject.HowManyImagesInBuffer;
DWObject.RegisterEvent('OnPostLoad', function() {
var newCount = DWObject.HowManyImagesInBuffer;
for (var j = 0; j < newCount - oldCount; j++)
DWObject.MoveImage(oldCount + j, index + j);
});
DWObject.LoadImageEx('', 5);
}
If the TWAIN driver of your device supports discarding blank pages, you can use the driver’s built-in feature.
IfShowUI
property to true to display the User Interface (UI) of the source and you can check the option there (it normally reads ‘discard blank’)IfAutoDiscardBlankpages
to true or negotiate the ICAP_AUTODISCARDBLANKPAGES capability in code to discard blank page automatically. Please NOTE that this property or capability only works if the scanner itself supports the feature (on the hardware level).DWObject.SelectSource();
DWObject.OpenSource;
DWObject.IfShowUI = false;
//*Use the property
DWObject.IfAutoDiscardBlankpages = true;
//*Use capability negotiation
DWObject.Capability = Dynamsoft.DWT.EnumDWT_Cap.ICAP_AUTODISCARDBLANKPAGES;
DWObject.CapType = Dynamsoft.DWT.EnumDWT_CapType.TWON_ONEVALUE;
DWObject.CapValue = -1;//Auto
if(DWObject.CapSet){
alert("Successful!");
}
DWObject.AcquireImage();
If the scanner itself doesn’t support discarding blank pages, you can also use the IsBlankImageExpress
method to do this as a workaround. To detect and discard blank pages automatically, you can do it in the OnPostTransfer
event which fires after each transfer.
function DWObject_OnPostTransfer() {
DWObject.BlankImageMaxStdDev = 20;
if (DWObject.IsBlankImageExpress(DWObject.CurrentImageIndexInBuffer)) {
DWObject.RemoveImage(DWObject.CurrentImageIndexInBuffer);
}
}
NOTE: In many cases, the scanned blank image may come with some noises which would affect the result returned by IsBlankImageExpress. To improve the result, you may adjust the value of BlankImageMaxStdDev
Property. The default value is 1 (0 means single-color image). Thus, by increasing the value a little bit (e.g. to 20), noises on images are ignored so a blank image can be detected faster.
Scenario: For customers who are using Dynamic Web TWAIN, to change the location of the ‘Resources’ folder, or to rename it, please following the steps below:
Steps: Say the original Resources folder is at ‘../{Project Directory}/Resources’, and you want to change it to ‘../{Project Directory}/Newfolder/ResourcesTest’.
<script src="Resources/dynamsoft.webtwain.initiate.js"></script>
// or your own operation js file
<script src="Scripts/DWTSample_BasicScan.js"></script>
<script src="Resources/dynamsoft.webtwain.config.js"></script>
Modify as below:
<script src="Newfolder/ResourcesTest/dynamsoft.webtwain.initiate.js"></script>
// or your own operation js file
<script src="Scripts/DWTSample_BasicScan.js"></script>
<script src="Newfolder/ResourcesTest/dynamsoft.webtwain.config.js"></script>
Dynamsoft.DWT.ResourcesPath = 'Resources';
Modify as below:
Dynamsoft.DWT.ResourcesPath = 'Newfolder/ResourcesTest';
latest version