|
|
Comments and Discussions
|
|
 |

|
Hi,
Image always stored at 96dpi. I am not able to find the solution for that.
|
|
|
|

|
Hello guys, i am using this lib with vb.net winform application. it works fine when i try to scan pages using my scanner. But after that when i try to scan images using this lib it throws the Out of memory exception. It works when i close my app then run again. I came on conclusion that this lib stores the scanned images in memory and not free the memory after transfering pictures. i study the code and find that there is a function of GlobleFree which is not run after acquire or transferpictures I tried to change some code but no luck. Is anyone having same issues or handled the same situation then please help me.
Thanking You,
Jaydeep Jadav
|
|
|
|

|
Dear Jaydeep,
I am Suffering from the same issue but little Diffident.
Have you reach to some Solution for OUT of memory Exception?
Because when I am scanning 100-110 pages it works Smoothly but Some time it gets Out of Memory Exception when I restart app it Again run Smoothly
Can you please Suggest
|
|
|
|

|
I fixed it by forcing GC to collect garbage after every transfer of picture.
I used
GC.Finalize()
Thanks and Regards,
Jaydeep Jadav
|
|
|
|

|
Please help on this .. when I run the program I am able to select the scanner but when I click Acquire image it gives me exception as below
LoaderLock was detected
Message: Attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.
I am using Visual Studio 2008, is it causing the problem..
Thanks & Regards
Leena
|
|
|
|

|
I have the same problem. Did you find any solutions? Thanks.
modified 11 Jul '12 - 8:22.
|
|
|
|

|
Great article. Thank you very much.
But I want to enable duplex scan using this code.
Can anyone help me.
Thank you.
|
|
|
|

|
I tried many ways to hide progress indicator when ShowuI=False; But not working. Please help me.
|
|
|
|

|
Hi,
When I downloaded the source code and run debug mode on the 64 bits machine, it throws an error when calling the Init() method. it's complaining invalid format ... please advise
asda
|
|
|
|

|
You might check your project output - and make sure it is specify 32 bit code only...
|
|
|
|

|
where we check 32 bit code in vs ?
|
|
|
|

|
hi,
i have a question how set Flatbed of Feader.
in twaindef
CAPFEnabled = 0x1002
in twainlib in acquire method
TwCapability capF = new TwCapability(TwCap.CAPFEnabled, 1);
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Get, capF);
if (rc != TwRC.Success)
{
Console.WriteLine("No feeder");
}
it's correct???
|
|
|
|

|
please i want to ask i can user that classes in asp.net webform
|
|
|
|

|
The code opens a window to select the parameters I want to redefine
the resolution the area of scan etc
Can you send the code
golan87@walla.co.il
Thanks
|
|
|
|

|
Provide the dll used for development, please.
|
|
|
|

|
It's posible to change scaning variable from code?
|
|
|
|

|
TwUserInterface guif = new TwUserInterface();
guif.ShowUI = 0;
guif.ModalUI = 1;
|
|
|
|

|
if scanner is not connected then that freeze whole application so is there any method to check whether any scanner is connected before calling of Acquire?
plz help...
|
|
|
|

|
Hi, thanks for app really very usefull but how can i show scanned image to picturebox?
|
|
|
|

|
bool IMessageFilter.PreFilterMessage( ref Message m )
{
TwainCommand cmd = tw.PassMessage( ref m );
if( cmd == TwainCommand.Not )
return false;
switch( cmd )
{
case TwainCommand.CloseRequest:
{
EndingScan();
tw.CloseSrc();
break;
}
case TwainCommand.CloseOk:
{
EndingScan();
tw.CloseSrc();
break;
}
case TwainCommand.DeviceEvent:
{
break;
}
case TwainCommand.TransferReady:
{
ArrayList pics = tw.TransferPictures();
EndingScan();
tw.CloseSrc();
picnumber++;
MessageBox.Show("Number of Scanned Docs: " + pics.Count.ToString());
for( int i = 0; i < pics.Count; i++ )
{
IntPtr img = (IntPtr) pics[ i ];
this.pictureBox1.Image = TwainHelper.ImageFromIntPtr(img);
}
break;
}
}
return true;
}
----------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Drawing.Imaging;
using System.Reflection;
namespace TwainGui
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class BITMAPINFOHEADER
{
public uint biSize;
public int biWidth;
public int biHeight;
public ushort biPlanes;
public ushort biBitCount;
public uint biCompression;
public uint biSizeImage;
public int biXPelsPerMeter;
public int biYPelsPerMeter;
public uint biClrUsed;
public uint biClrImportant;
public void Init() { this.biSize = (uint)Marshal.SizeOf(this); }
}
class TwainHelper
{
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
for (int j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
public static Image ImageFromIntPtr(IntPtr imagePtr)
{
BITMAPINFOHEADER bmpInfoHeader = new BITMAPINFOHEADER();
IntPtr bmpptr = GlobalLock(imagePtr);
IntPtr pixptr = GetPixelInfo(bmpptr, bmpInfoHeader);
Bitmap bitmap = new Bitmap(bmpInfoHeader.biWidth, bmpInfoHeader.biHeight);
Graphics graphics = Graphics.FromImage(bitmap);
IntPtr hdc = graphics.GetHdc();
SetDIBitsToDevice(hdc, 0, 0, bmpInfoHeader.biWidth, bmpInfoHeader.biHeight,
0, 0, 0, bmpInfoHeader.biHeight, pixptr, bmpptr, 0);
graphics.ReleaseHdc(hdc);
return (Image)bitmap;
}
private static IntPtr GetPixelInfo(IntPtr bmpptr, BITMAPINFOHEADER bmpInfoHeader)
{
Marshal.PtrToStructure(bmpptr, bmpInfoHeader);
if (bmpInfoHeader.biSizeImage == 0)
bmpInfoHeader.biSizeImage = (uint)(((((uint)bmpInfoHeader.biWidth * (uint)bmpInfoHeader.biBitCount) + 31) & ~31) >> 3) * (uint)bmpInfoHeader.biHeight;
int p = (int)bmpInfoHeader.biClrUsed;
if ((p == 0) && (bmpInfoHeader.biBitCount <= 8))
p = 1 << bmpInfoHeader.biBitCount;
p = (p * 4) + (int)bmpInfoHeader.biSize + (int)bmpptr;
return (IntPtr)p;
}
[DllImport("gdi32.dll", ExactSpelling = true)]
internal static extern int SetDIBitsToDevice(IntPtr hdc, int xdst, int ydst,
int width, int height, int xsrc, int ysrc, int start, int lines,
IntPtr bitsptr, IntPtr bmiptr, int color);
[DllImport("kernel32.dll", ExactSpelling = true)]
internal static extern IntPtr GlobalLock(IntPtr handle);
[DllImport("gdiplus.dll", ExactSpelling = true)]
internal static extern int GdipCreateBitmapFromGdiDib(IntPtr bminfo, IntPtr pixdat, out IntPtr image);
}
}
|
|
|
|

|
The binary "TestTwainLib.exe" run Ok, but the source show compilation error "LoaderLock" in the:
rc = DSM_Ident(appid, IntPtr.Zero, TwDG.TwDG_Control, TwDAT.TwDAT_Identity, TwMSG.TwMSG_CloseDS, SelectedDataSource)
Whats Happen?
|
|
|
|

|
I was getting that until i went into Debug, Exceptions, Managed Debugging Assistants, and turned off LoaderLock exceptions.
|
|
|
|

|
Change the platform target to x86. That should fix this issue.
|
|
|
|

|
I changed the target and also unmark the exception for the loader lock. still get the error message. Any ideas? Thanks.
|
|
|
|
|

|
When I press acuqire it opens a window from my scanner
when I press cancel on it, the whole application get freezed. How to solve this???
|
|
|
|
|

|
HI all ,
I tried to fix this issue from last 1 month onwards,TransferPictures() method returns pics count 1 alway ,when scanning multiple pages.previously it was working before changed Acquire() method code to set the user selected scanner.I have written the method setscanner() in Acquire().after wards it this code scan's multiple pages ,but TransferPictures() method returns pics count 1.One day i commented the method setscanner() in Acquire() method , then it works fine.after 2 day's it is not working.I dont know how it changes time to time.
please help me , this issue struggles me like anything...........
|
|
|
|

|
well done, great help for getting started!
|
|
|
|
|

|
Hi ,
I am realatively new for programming, Please help me.
When I press acuqire it opens a window from my scanner
when I press cancel on it
the whole application get freezed. How to get rid from this.
thanks
|
|
|
|

|
do you solve the problem????
plz help
|
|
|
|

|
How to pass scanning area parameter in the application. Like I want to scann only 10 centimeter from the top of the scanner. Thanks in advance.
|
|
|
|

|
I am trying to use API calls in c# to do A3 scanning. I am using the following code, but the result in the rc variable comes back as failure. I have used TwCap.
TwCapability capPaperSize = new TwCapability(TwCap.ICAP_SUPPORTEDSIZES, 1);
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, capPaperSize);
if (rc != TwRC.Success)
{
CloseSrc();
return;
}
I have also used the following TwCap enum values in the TwCapability parameter, but the result are the same apart from TWSS_A4. A4 work but nothing else does. Am I doing something wrong. This really urgent I am using XEROX DocuMate 752 scanner.
TWSS_NONE = 0x0000,
TWSS_A4 = 0x0001,
TWSS_JISB5 = 0x0002,
TWSS_USLETTER = 0x0003,
TWSS_USLEGAL = 0x0004,
/* Added 1.5 */
TWSS_A5 = 0x0005,
TWSS_ISOB4 = 0x0006,
TWSS_ISOB6 = 0x0007,
/* Added 1.7 */
TWSS_USLEDGER = 0x0009,
TWSS_USEXECUTIVE = 0x000A,
TWSS_A3 = 0x000B,
|
|
|
|

|
can any one give this whole project in vb.net (windows application)
|
|
|
|
|

|
How to acchieve the auto crop in twainlib.vb. where i have change the code.
|
|
|
|

|
How can i remove scanner UI and i would like to pass Auto Crop or Full Page and Color or Blackand white from our vb.net interface. How can i pass these parameters from the vb.net to twainlib.vb.
kindly help me.it is urgent.
|
|
|
|

|
The problem i am facing while running this code is, when i click acquire it throws up a UI for selecting an option of grayscale, color, black&white.
Is there any way i can get rid of the UI. I tried a lot analyzing it, but somehow the UI keeps pop up for me.
Is there any way i can manually enter the value for grayscale. So that it always scans in gray scale.
Plzzzz need help on this
|
|
|
|

|
Dear All,
The first come to here. I use the NET TWAIN image scanner.
But I Selet ADF Option, [Document In ADF] set more than 1 value,
then Scan button click.The TWAIN DS window display all long,
When Scan button click,I want to close the TWAIN window.
What Can I Do?Help Me..Thank you.
|
|
|
|

|
I could hide the user interface by commenting the line
//this.ShowUI;
But after commenting the line, only black and white image can be captured.
I want to capture color images.How can i solve this?
|
|
|
|

|
Could not compile the source code (VS 2010, Windows 7)
I receive the following error:
"An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)"
|
|
|
|

|
"BadImageFormatException" is thrown when the application loads a DLL having incompatible bitness
(a 64 bit exe tried to load a 32bit DLL or a 32 bit exe tried to load a 64 bit DLL).
Make sure you compile your exe file as 32 bit (x86) !!!!.
|
|
|
|

|
In your project, go to Build tab, Change PlatForm target to x86
|
|
|
|

|
The code below always returns false even if the scanner is online and ready. Can anyone see any problems with the code? I appreciate any help.
Public Function IsDeviceOnline() As Boolean
Try
Dim rc As TwRC
Dim capDeviceOnline As New TwCapability(TwCap.CAP_DEVICEONLINE)
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.DeviceEvent, capDeviceOnline)
If rc <> TwRC.Success Then
CloseSrc()
Return False
End If
Return True
Catch ex As Exception
Return False
End Try
End Function
Below is the TwainLib constructor.
Public Sub New()
appid = New TwIdentity()
appid.Id = IntPtr.Zero
appid.Version.MajorNum = 1
appid.Version.MinorNum = 1
appid.Version.Language = LanguageUSA
appid.Version.Country = CountryUSA
appid.Version.Info = "" ' TODO
appid.ProtocolMajor = TwProtocol.Major
appid.ProtocolMinor = TwProtocol.Minor
appid.SupportedGroups = CInt(TwDG.Image Or TwDG.Control)
appid.Manufacturer = ""
appid.ProductFamily = ""
appid.ProductName = ""
srcds = New TwIdentity()
srcds.Id = IntPtr.Zero
evtmsg.EventPtr = Marshal.AllocHGlobal(Marshal.SizeOf(_winmsg))
End Sub
|
|
|
|

|
I want to convert this sample application in asp.net. I have quoted here a portion from the source code. If you go through the source code then you will get the following portion in the MainFrame.cs.
public MainFrame()
{
InitializeComponent();
tw = new Twain();
tw.Init( this.Handle );
}
what will be the equivalent of the parameter this.Handle in asp.net.
|
|
|
|

|
use the native functions to get the ptr value for the active window as follows
tw.Init( GetForegroundWindow());
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
|
|
|
|

|
I used this code to rewrite an old application that used the Pegasus library for image scanning. The old application produced tiff images that were 2544 X 3296 and about 40kb in size. The Twain application produces tiff images that are 1700 X 2200 but are more than 2.5 mb in size.
I'm new to image processing. But, I'm guessing this has something to do with compression. How do turn compression on?
Thanks,
Mike
|
|
|
|

|
I am providing source internally and does not want to show the dialog box for selecting scanner type .please help
|
|
|
|
|
 |
|
|
General News Suggestion Question Bug Answer Joke Rant Admin
|
Using TWAIN API to scan images
| Type | Article |
| Licence | Public Domain |
| First Posted | 16 Sep 2001 |
| Views | 2,229,777 |
| Bookmarked | 374 times |
|
|