PDA

View Full Version : سوال: کنترل اسکنر در سی شارپ



MasoudAliAkbari
شنبه 18 آذر 1391, 21:05 عصر
با سلام خدمت دوستان،
می خواستم بدونم برای کار کردن با اسکنر در سی شارپ باید چه کار کنم، مثلا اگه یه عکس را بخوام با برنامم به اسکنر دستور اسکنش را بدم و بعد عکس اسکن شده را در برنامم به کاربر نشان بدم و یه سری تغییرات ساده را روی آن انجام داده و سپس تصویر را ذخیره کنم باید به چه صورت عمل کنم؟

نمی خوام از کامپوننت آماده استفاده منم، می خوام کد نویسیشو یاد بگیرم
ممنون

programerinfonet
شنبه 18 آذر 1391, 21:50 عصر
ایتدا این کد رو تو یه کلاس بنویس و اون رو تو برنامت فراخوانی کن

public class ImageAcquisition
{
private WIALib.WiaClass WiaClass;
private WIALib.ItemClass ItemClass;
private WIALib.CollectionClass CollectionClassDevices;
private WIALib.CollectionClass CollectionClassPics;


#region SelectDevice
public bool SelectDevice()
{
try
{
object selectUsingUI;

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;
}
}
#endregion

#region Capture
public System.Drawing.Image Capture()
{
try
{
CollectionClassPics = ItemClass.GetItemsFromUI(WIALib.WiaFlag.SingleImag e, WIALib.WiaIntent.ImageTypeColor) as WIALib.CollectionClass;
if (CollectionClassPics == null)
return null;

ItemClass = (WIALib.ItemClass)System.Runtime.InteropServices.M arshal.CreateWrapperOfType(CollectionClassPics[0], typeof(WIALib.ItemClass));
string imageFileName = System.IO.Path.GetTempFileName();
ItemClass.Transfer(imageFileName, false);
System.Drawing.Image Image = System.Drawing.Image.FromFile(imageFileName);

System.Runtime.InteropServices.Marshal.ReleaseComO bject(CollectionClassPics[0]);
return Image;
}
catch (System.Exception exp)
{
return null;
}
}
#endregion
}


با این کد هم ازش استفاده کن

ImageAcquisition ImageAcquisition = new ImageAcquisition();
ImageAcquisition.SelectDevice();
this.pictureBox.Image = ImageAcquisition.Capture();

Esmail Solhkhah
یک شنبه 19 آذر 1391, 00:45 صبح
سلام دوست عزیز

این لینک (http://barnamenevis.org/showthread.php?355648-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%DA%A9%D9%86%D8%B1-%D8%A8%D8%A7-Wia) رو هم ببینید. (Wia - Virtual Scaner - Component)

موفق باشید.

ghasem110deh
چهارشنبه 22 مرداد 1393, 10:43 صبح
ایتدا این کد رو تو یه کلاس بنویس و اون رو تو برنامت فراخوانی کن

public class ImageAcquisition
{
private WIALib.WiaClass WiaClass;
private WIALib.ItemClass ItemClass;
private WIALib.CollectionClass CollectionClassDevices;
private WIALib.CollectionClass CollectionClassPics;


#region SelectDevice
public bool SelectDevice()
{
try
{
object selectUsingUI;

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;
}
}
#endregion

#region Capture
public System.Drawing.Image Capture()
{
try
{
CollectionClassPics = ItemClass.GetItemsFromUI(WIALib.WiaFlag.SingleImag e, WIALib.WiaIntent.ImageTypeColor) as WIALib.CollectionClass;
if (CollectionClassPics == null)
return null;

ItemClass = (WIALib.ItemClass)System.Runtime.InteropServices.M arshal.CreateWrapperOfType(CollectionClassPics[0], typeof(WIALib.ItemClass));
string imageFileName = System.IO.Path.GetTempFileName();
ItemClass.Transfer(imageFileName, false);
System.Drawing.Image Image = System.Drawing.Image.FromFile(imageFileName);

System.Runtime.InteropServices.Marshal.ReleaseComO bject(CollectionClassPics[0]);
return Image;
}
catch (System.Exception exp)
{
return null;
}
}
#endregion
}


با این کد هم ازش استفاده کن

ImageAcquisition ImageAcquisition = new ImageAcquisition();
ImageAcquisition.SelectDevice();
this.pictureBox.Image = ImageAcquisition.Capture();


سلام ... اگه امکانش هست بیشترر توضیح بدید ... لطفا !
من تو یه کلاس جدید اینو نوشتم ولی هر جا WIALib هست رو خطا داره ... نیاز به یوزینگ یا چیزی داره ؟ ایراد کجاست ؟

masudafsar
سه شنبه 28 مرداد 1393, 09:04 صبح
سلام ... اگه امکانش هست بیشترر توضیح بدید ... لطفا !
من تو یه کلاس جدید اینو نوشتم ولی هر جا WIALib هست رو خطا داره ... نیاز به یوزینگ یا چیزی داره ؟ ایراد کجاست ؟

فکر کنم همایون عزیز تو این (http://barnamenevis.org/showthread.php?355648-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%DA%A9%D9%86%D8%B1-%D8%A8%D8%A7-Wia) پست جواب سوالتون رو داده باشن.

من زیاد وارد جزییات نمیشم فقط این نکته رو میگم که برای اضافه کردن کامپوننت اسکنر روی refrences راست کلیک کنید سپس add refrences رو بزنید سپس در تب COM ، کامپوننت Microsoft Windows Image Acquisition Library رو به برنامه اضافه کنید.

ghasem110deh
سه شنبه 04 شهریور 1393, 18:53 عصر
خیلی حرفه ای نیستم ... ولی تقریبا همین کار رو کردم !

NASA's Spaceman
سه شنبه 04 شهریور 1393, 19:16 عصر
این ریفرنس رو هم add کردم ولی بازم مشکل داره حتی تو using ها هم تعریفش کردم
ولی بازم داره اررور میده رو همون کلمه اگه کسی مشکلش رو میدنه بگه تا درستش کنیم و یا نمونه ساخته شدش رو بزاره تا دانلود کنیم
با سپاس Spaceman

Julias99
دوشنبه 17 شهریور 1393, 12:43 عصر
این ریفرنس رو هم add کردم ولی بازم مشکل داره حتی تو using ها هم تعریفش کردم
ولی بازم داره اررور میده رو همون کلمه اگه کسی مشکلش رو میدنه بگه تا درستش کنیم و یا نمونه ساخته شدش رو بزاره تا دانلود کنیم
با سپاس Spaceman

منم همین مشکل رو دارم
کی میدونه چی کار باید بکنیم ؟

ghasem110deh
سه شنبه 18 شهریور 1393, 11:38 صبح
فکر کنم همایون عزیز تو این (http://barnamenevis.org/showthread.php?355648-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%DA%A9%D9%86%D8%B1-%D8%A8%D8%A7-Wia) پست جواب سوالتون رو داده باشن.

آقا این مشکل هنوز برطرف نشده ... کامپوننت اسکنر رو اضافه کردیم ... ولی هنوز کلی خطا داره (WIA) ب
اگر خودتون سورس سالمش رو دارین لطفا بزارین :)

NasimBamdad
سه شنبه 18 شهریور 1393, 14:02 عصر
DLL اش رو باید به پروژه اضافه کنید

NasimBamdad
سه شنبه 18 شهریور 1393, 14:03 عصر
ورژن جدید VintaSoft Twain رو کسی نداره؟

ghasem110deh
سه شنبه 18 شهریور 1393, 19:01 عصر
DLL اش رو باید به پروژه اضافه کنید

سلام
پس اینکه تو رفرنس میاریم چیه ؟ هم باید dll باشه ، هم تو رفرنس ؟

sara_kamali
دوشنبه 13 اردیبهشت 1395, 12:21 عصر
DLL اش رو باید به پروژه اضافه کنید
منظورتون از dll همون کامپوننت Microsoft Windows Image Acquisition Library
هست دیگه؟خب این کاروکردیم بازم جواب نداد!