View Full Version : بهترین کامپوننت برای کار با اسکنر
مهدی رحیم زاده
دوشنبه 17 فروردین 1388, 07:51 صبح
سلام من برای کار بااسکنر دنبال 1 کامپوننت عالی می گردم . یه دونه دارم اما زیاد ازش خوشم نمیاد .
میشه دوستان عزیز معرفی کنن .
با تشکر
Happy_davood
دوشنبه 17 فروردین 1388, 09:17 صبح
فکر نکنم نیاز به کامپوننت خاصی باشه . خودتون هم می تونید بنویسید . من یک بار این کار رو کردم و نتیجه هم داد .
جمعاً سه تا تابع : SelectDevice و DeviceSetting و Capture
تبدیل به یه کلاس کردم و استفاده می کنم .
public class ImageAcquisition
{
private WIALib.WiaClass WiaClass;
private WIALib.ItemClass ItemClass;
private WIALib.CollectionClass CollectionClassDevices;
private WIALib.CollectionClass CollectionClassPics;
private object selectUsingUI;
#region SelectDevice
public bool SelectDevice()
{
try
{
WiaClass = new WIALib.WiaClass();
CollectionClassDevices = (WIALib.CollectionClass)WiaClass.Devices;
if (WiaClass.Devices.Count == 0)
return false;
selectUsingUI = System.Reflection.Missing.Value;
ItemClass = (WIALib.ItemClass)WiaClass.Create(ref selectUsingUI);
if (ItemClass == null)
return false;
return true;
}
catch (System.Exception exp)
{
return false;
}
return false;
}
#endregion
#region DeviceSetting
public bool DeviceSetting()
{
try
{
CollectionClassPics = (WIALib.CollectionClass)ItemClass.GetItemsFromUI(W IALib.WiaFlag.SingleImage, WIALib.WiaIntent.MaximizeQuality);
if (CollectionClassPics == null)
return false;
}
catch (System.Exception exp)
{
return false;
}
return true;
}
#endregion
#region Capture
public System.Drawing.Image Capture()
{
try
{
if(CollectionClassPics[0] != null)
{
System.Drawing.Image Image;
WIALib.ItemClass ItemClassCurrent = (WIALib.ItemClass)System.Runtime.InteropServices.M arshal.CreateWrapperOfType(CollectionClassPics[0], typeof(WIALib.ItemClass));
string fileName = System.IO.Path.GetTempFileName();
ItemClassCurrent.Transfer(fileName, false);
Image = System.Drawing.Image.FromFile(fileName);
System.Runtime.InteropServices.Marshal.ReleaseComO bject(CollectionClassPics[0]);
return Image;
}
return null;
}
catch (System.Exception exp)
{
return null;
}
}
#endregion
}
مهدی رحیم زاده
جمعه 21 فروردین 1388, 15:48 عصر
private WIALib.WiaClass WiaClass;
private WIALib.ItemClass ItemClass;
private WIALib.CollectionClass CollectionClassDevices;
private WIALib.CollectionClass CollectionClassPics;
روی اینا اشکال میگیره و میگه Reference بده ؟
چکار کنم ؟
Happy_davood
جمعه 21 فروردین 1388, 15:54 عصر
ای بابا این دیگه پرسیدن نداره .
WIALib رو به Refrence های پروژه خودتون اضافه کنید دیگه.
مهدی رحیم زاده
جمعه 21 فروردین 1388, 16:09 عصر
WIALib توی کدوم NameSpace قرار دادره ؟ من اینو نمی دونم .
Happy_davood
جمعه 21 فروردین 1388, 16:17 عصر
یادم نیست . به نظرم باید این DLL رو به پروژه اضافه کنید WiaLib.dll
یه سرچ تو گوگل بزنید . کلی نتیجه میاد که چند تای اولش هم تو CodeProject هست . از اونجا یه پروژه دانلود کنید و DLL رو بردارید و حجم Dll فقط 34 ~ 40 کیلوبایت میشه
Happy_davood
جمعه 21 فروردین 1388, 16:18 عصر
چه طوری میشه فایل آپلود کرد از اینجا من بفرستم ؟!
Happy_davood
جمعه 21 فروردین 1388, 16:23 عصر
پیدا کردم
توی رRefrence ها
قسمت COM
Microsoft Windows Image Acquisition 1.01 Type Library
اوکی !؟
مهدی رحیم زاده
جمعه 21 فروردین 1388, 17:27 عصر
با تشکر
برای آپلود هم کافیه که مدیریت ضمیمه ها رو بزنی .
دستت درد نکنه
مهدی رحیم زاده
جمعه 15 خرداد 1388, 20:10 عصر
سلام
من نمی دونم با این کلاسی که دوستومون نوشتن چطور باید قبل از اسکن تنظیماتش رو هم فراخوانی کنم . مثلا اینکه عکس با چه رزولیشنی اسکن بشه ؟
کسی میدونه ؟
با تشکر
hooooman
یک شنبه 17 خرداد 1388, 23:16 عصر
فکر نکنم نیاز به کامپوننت خاصی باشه . خودتون هم می تونید بنویسید . من یک بار این کار رو کردم و نتیجه هم داد .
جمعاً سه تا تابع : SelectDevice و DeviceSetting و Capture
تبدیل به یه کلاس کردم و استفاده می کنم .
public class ImageAcquisition
{
private WIALib.WiaClass WiaClass;
private WIALib.ItemClass ItemClass;
private WIALib.CollectionClass CollectionClassDevices;
private WIALib.CollectionClass CollectionClassPics;
private object selectUsingUI;
#region SelectDevice
public bool SelectDevice()
{
try
{
WiaClass = new WIALib.WiaClass();
CollectionClassDevices = (WIALib.CollectionClass)WiaClass.Devices;
if (WiaClass.Devices.Count == 0)
return false;
selectUsingUI = System.Reflection.Missing.Value;
ItemClass = (WIALib.ItemClass)WiaClass.Create(ref selectUsingUI);
if (ItemClass == null)
return false;
return true;
}
catch (System.Exception exp)
{
return false;
}
return false;
}
#endregion
#region DeviceSetting
public bool DeviceSetting()
{
try
{
CollectionClassPics = (WIALib.CollectionClass)ItemClass.GetItemsFromUI(W IALib.WiaFlag.SingleImage, WIALib.WiaIntent.MaximizeQuality);
if (CollectionClassPics == null)
return false;
}
catch (System.Exception exp)
{
return false;
}
return true;
}
#endregion
#region Capture
public System.Drawing.Image Capture()
{
try
{
if(CollectionClassPics[0] != null)
{
System.Drawing.Image Image;
WIALib.ItemClass ItemClassCurrent = (WIALib.ItemClass)System.Runtime.InteropServices.M arshal.CreateWrapperOfType(CollectionClassPics[0], typeof(WIALib.ItemClass));
string fileName = System.IO.Path.GetTempFileName();
ItemClassCurrent.Transfer(fileName, false);
Image = System.Drawing.Image.FromFile(fileName);
System.Runtime.InteropServices.Marshal.ReleaseComO bject(CollectionClassPics[0]);
return Image;
}
return null;
}
catch (System.Exception exp)
{
return null;
}
}
#endregion
}
ببخشین
میدونم این بحث مال خیلی وقت پیشه اما میخاستم ببینم از این کلاس چجوری باید استفاده کرد؟
اگه میشه 1 نمونه بذارین
danial82
چهارشنبه 31 شهریور 1389, 11:12 صبح
من یک اسکنر دارم که امکان اسکن کردن چندین صفحه رو داره کامپوننت یا برنامه ای میخوام که اینها رو تبدیل به یک فایل pdf بکنه
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.