场景:
开发环境
WindowsXP Sp3 简体中文
VisualStudio 2005 中文 SP1
接口版本
Sdtaip.dll Version 2006年11月15日, 9:34:36
WltRS.dll Version 2006年11月15日, 9:34:36
此例程在VB下运行正常,通过VS2005升级工具自动升级到VB.net后,第一次运行正常,第二次运行后在获取身份证信息后出现出现附件中错误。
解决过程:
经实验:1、代码在VB项目下没有问题,但转到C#下即出现错误。
2、考虑可能变量声明长度、类型等与VB不同,于是转到VB.net,同样出现错误。
3、将SDK重新使用VB封装成OCX然后使用,VB.net,C#调用依然有错误。
4、偶然一次看到VB原始例子中把照片加载项注释掉了,于是尝试不加载图片,OK不再报错了。
5、检查在.net加载图片和不加载图片时图片文件的状态,分别不占用和不占用,找到问题所在了,VB与.net加载图片的方式不同,VB加载完成即释放,但.NET始终占用,这个应该是开发工具的机制不同。
最终解决办法:(参考:GDI+中发生一般性错误” 的终极解决办法,没找到最原始出处)
Bitmap bmp = new Bitmap("photo.bmp");
Bitmap bmp2 = new Bitmap(102, 126,System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Graphics draw = Graphics.FromImage(bmp2);
draw.DrawImage(bmp, 0, 0);
pEditIDCard.Image = (Image)bmp2;
draw.Dispose();
bmp.Dispose();
至此开发完成。
感谢精伦技术部、市场部各位朋友的支持!