Topics
How to automatically deskew an image
Generally, there are two ways to automatically deskew an image.
Enable the capability of a scanner
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;
Use DWT to deskew an image as it is scanned
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));
});
How to insert images to a specified index
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
Insert when acquiring
function acquireToIndex(index) {
DWObject.IfAppendImage = false;
DWObject.CurrentImageIndexInBuffer = index;
DWObject.RegisterEvent('OnPostTransfer', function() {
DWObject.CurrentImageIndexInBuffer++;
});
DWObject.RegisterEvent('OnPostAllTransfers', function() {
DWObject.IfAppendImage = true;
});
DWObject.AcquireImage();
}
Insert when loading
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);
}