PDA

View Full Version : آموزش: آموزش اسکنر با Wia



homayon_azizi
پنج شنبه 19 مرداد 1391, 15:18 عصر
سلام خدمت دوستان و اساتید محترم
هدفم از این تاپیک این بود چون خودم خیلی دنبال سورس اسکنر می گشتم و مجبور شدم خودم با بدبختی بنویسمش و انشاا.. بتونه به سایر دوستان که براشون سواله کمک کنه.

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

نرم افزار :

http://www.mediafire.com/download/1a4xarl4a41a572/WIAonTWAIN_SDK.rar

سورس :

amiralipouladi
یک شنبه 07 آبان 1391, 17:24 عصر
آقا دستت درد نکنه من امروز بیچاره شدم ، اما همه من می خوام بعد از اسکن عکس رو در جایی که قبلا تو برنامه گفتم ذخیره کنه ، ولی این این کار رو نمی کنه :(

Esmail Solhkhah
دوشنبه 08 آبان 1391, 00:41 صبح
با تشکر از دوستمون بخاطر مطلب مفیدشون.

دوستانی که رابطه خوبی با Wia ندارن بنده بهشون کامپوننت Vintasoft.Twain (http://www.vintasoft.com/vstwain-dotnet-index.html) رو پیشنهاد میکنم، یه dll حدود 350 کیلو بایت
سمپلهای فراوان ، هلپ کامل ، قابل استفاده در XP و Seven

موفق باشید.

AmirGhasemi
دوشنبه 08 آبان 1391, 09:08 صبح
سلام دوست عزيز جناب اسماعيل عزيز
اگر امكانش هست مثال و نمونه و اموزشي از اين كامپوننت برايم ما بذار

Esmail Solhkhah
دوشنبه 08 آبان 1391, 12:10 عصر
سلام دوست عزيز جناب اسماعيل عزيز
اگر امكانش هست مثال و نمونه و اموزشي از اين كامپوننت برايم ما بذار

سلام دوست عزیز

فایل dll مربوطه رو به تولباکس اد کنید،در یک فرم ساده کنترل VSTwain1 رو به فرم درگ کنید.

کپچر در ایونت ImageAcquired انجام میشه

متد GetCurrentImage() رو در این ایونت فراخوانی کنید تا یه آبجکت Image بگیرید.

موفق باشید.

ramin_rp
دوشنبه 15 آبان 1391, 11:48 صبح
سلام دوست عزیز
مثل اینکه این کامپوننت با دات نت 4 درست کار نمیکنه نه؟

homayon_azizi
دوشنبه 15 آبان 1391, 22:04 عصر
سلام دوست عزیز
مثل اینکه این کامپوننت با دات نت 4 درست کار نمیکنه نه؟

سلام
چرا کار میکنه چون خودم با 4 پیاده سازیش کردم

homayon_azizi
دوشنبه 15 آبان 1391, 22:05 عصر
سلام دوست عزیز

فایل dll مربوطه رو به تولباکس اد کنید،در یک فرم ساده کنترل VSTwain1 رو به فرم درگ کنید.

کپچر در ایونت ImageAcquired انجام میشه

متد GetCurrentImage() رو در این ایونت فراخوانی کنید تا یه آبجکت Image بگیرید.

موفق باشید.


عالی بود دستت درد نکنه

ramin_rp
دوشنبه 15 آبان 1391, 22:16 عصر
سلام
شما از جه ورژنی استفاده کردین؟
اگه براتون مقدور لینک دانلودش رو برام پیغام خصوصی کنید

mohammad5593
سه شنبه 14 آبان 1392, 22:47 عصر
سلام خدمت دوستان و اساتید محترم
هدفم از این تاپیک این بود چون خودم خیلی دنبال سورس اسکنر می گشتم و مجبور شدم خودم با بدبختی بنویسمش و انشاا.. بتونه به سایر دوستان که براشون سواله کمک کنه.

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

نرم افزار :

http://www.uploadbaz.com/yzgime96kly2

سورس :

باسلام و عرض "دمت گرم"
لینکی حاوی اسکنر مجازی گذاشتید که متاسفانه خرابه لطف کن اگه فایل را داری بذار تا ما فقیر فقرا هم فیض ببریم . خیلی نیازش دارم:لبخند:

momimomi
سه شنبه 08 بهمن 1392, 23:10 عصر
سلام
لینک اسکنر مجازی خرابه, لطفا خودتان روی سایت آپلود کنید
ممنون

momimomi
چهارشنبه 09 بهمن 1392, 19:05 عصر
سلام
پست 5# (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&p=1617927&viewfull=1#post1617927) مگه کارتون رو راه نمیندازه؟ :متفکر:
سلام
برای تست برنامه بر روی سیستمی که اسکنر ندارد, راهی به جز نصب اسکنر مجازی هست یا نه؟

homayon_azizi
دوشنبه 28 بهمن 1392, 20:39 عصر
سلام دوستان عزیز. من عذر خواهی میکنم. متاسفانه آپلود باز هرچی دستش بیاد حذف میکنه. لینک دوباره اصلاح شد. ببخشید اگه دیر جواب دادم. چون مشغول خدمتم زیاد نمیتونم جواب سوالارو بدم. سپاس دوستان

ghasem110deh
چهارشنبه 22 مرداد 1393, 10:33 صبح
سلام خدمت دوستان و اساتید محترم
هدفم از این تاپیک این بود چون خودم خیلی دنبال سورس اسکنر می گشتم و مجبور شدم خودم با بدبختی بنویسمش و انشاا.. بتونه به سایر دوستان که براشون سواله کمک کنه.

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

نرم افزار :

http://www.mediafire.com/download/1a4xarl4a41a572/WIAonTWAIN_SDK.rar

سورس :

سلام ... ممنون بابت سورس و آموزش استفاده از اسکنر :)
اما یه سوال :
نمیشه کاری کرد که مستقیم بعد از اسکن توی picture box نمایش داده بشه ؟
اگه قرار باشه از openDialog استفاده کنیم ... دیگه نیازی به اسکن تو برنامه نیست ! تو ویندوز اسکن میکنیم بعد open میکنیم تو برنامه ... احتمال خطا هم نیست !
اگه راهی هست لطفا کمک کنید (دارم یه آلبوم عکس طراحی میکنم ... نمیخوام عکس اسکن تو خارج از برنامه (محیط ویندوز) ذخیره بشه)

masudafsar
سه شنبه 28 مرداد 1393, 10:02 صبح
من با اسکنر CanoScan LiDE 25 کار میکنم، هیچ کدوم از برنامه ها و سورس هایی که گذاشتید، اسکنر رو نمیشناسه. تنها پروژه زیر کار میکنه که من از کد هاش سر در نیاوردم.
.NET TWAIN image scanner (http://www.codeproject.com/Articles/1376/NET-TWAIN-image-scanner)

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

Julias99
شنبه 29 آذر 1393, 16:49 عصر
واسه من به محض لود شدن فرم خطای زیر رو میده
126737
و با زدن کلید اسکن خطای Library Is Not Initialise میده

fotrosi
سه شنبه 26 خرداد 1394, 09:46 صبح
با سلام لطف می کنید بگید چطوری از اسکنر مجازی استفاده کنم. بعد از نصب برنامه در سیستم من اسکنری رو شناسایی نکرد. (ویندوز 7 سرویس پک 1 64بیتی)

hrt1360
سه شنبه 10 شهریور 1394, 17:11 عصر
ممنون اسكنر مجازي خيلي عالي بود

mrali.jalali
چهارشنبه 11 شهریور 1394, 11:19 صبح
Vintasoft.Twain (http://www.vintasoft.com/vstwain-dotnet-index.html) محدودیت زمانی داره؟؟؟/

sara_kamali
دوشنبه 13 اردیبهشت 1395, 12:09 عصر
سلام کلاس wialib فضای نامی هم داره ؟برنامه من درست در همین مورد ارور میده!:گریه:

csharpcollegian
دوشنبه 13 اردیبهشت 1395, 13:02 عصر
سلام کلاس wialib فضای نامی هم داره ؟برنامه من درست در همین مورد ارور میده!:گریه:

سلام
دوست عزیز برای کار کردن با کامپوننت WIA از کلاس زیر استفاده کنید. فقط بایستی از تب COM ، کامپوننت Microsoft Windows Image Acquisition Library v2.0 رو به برنامه اضافه کنید.

class WIAScanner
{
const string wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
class WIA_DPS_DOCUMENT_HANDLING_SELECT
{
public const uint FEEDER = 0x00000001;
public const uint FLATBED = 0x00000002;
}
class WIA_DPS_DOCUMENT_HANDLING_STATUS
{
public const uint FEED_READY = 0x00000001;
}
class WIA_PROPERTIES
{
public const uint WIA_RESERVED_FOR_NEW_PROPS = 1024;
public const uint WIA_DIP_FIRST = 2;
public const uint WIA_DPA_FIRST = WIA_DIP_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
public const uint WIA_DPC_FIRST = WIA_DPA_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
//
// Scanner only device properties (DPS)
//
public const uint WIA_DPS_FIRST = WIA_DPC_FIRST + WIA_RESERVED_FOR_NEW_PROPS;
public const uint WIA_DPS_DOCUMENT_HANDLING_STATUS = WIA_DPS_FIRST + 13;
public const uint WIA_DPS_DOCUMENT_HANDLING_SELECT = WIA_DPS_FIRST + 14;
}
/// <summary>
/// Use scanner to scan an image (with user selecting the scanner from a dialog).
/// </summary>
/// <returns>Scanned images.</returns>
public static List<Image> Scan()
{
WIA.ICommonDialog dialog = new WIA.CommonDialog();
WIA.Device device = dialog.ShowSelectDevice
(WIA.WiaDeviceType.UnspecifiedDeviceType, true, false);
if (device != null)
{
return Scan(device.DeviceID);
}
else
{
throw new Exception("You must select a device for scanning.");
}
}
/// <summary>
/// Use scanner to scan an image (scanner is selected by its unique id).
/// </summary>
/// <param name="scannerName"></param>
/// <returns>Scanned images.</returns>
public static List<Image> Scan(string scannerId)
{
List<Image> images = new List<Image>();
bool hasMorePages = true;
while (hasMorePages)
{
// select the correct scanner using the provided scannerId parameter
WIA.DeviceManager manager = new WIA.DeviceManager();
WIA.Device device = null;
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
{
if (info.DeviceID == scannerId)
{
// connect to scanner
device = info.Connect();
break;
}
}
// device was not found
if (device == null)
{
// enumerate available devices
string availableDevices = "";
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
{
availableDevices += info.DeviceID + "\n";
}
// show error with available devices
throw new Exception("The device with provided ID could not be found.
Available Devices:\n" + availableDevices);
}
WIA.Item item = device.Items[1] as WIA.Item;
try
{
// scan image
WIA.ICommonDialog wiaCommonDialog = new WIA.CommonDialog();
WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item,w iaFormatBMP , false);
// save to temp file
string fileName = Path.GetTempFileName();
File.Delete(fileName);
image.SaveFile(fileName);
image = null;
// add file to output list
images.Add(Image.FromFile(fileName));
}
catch (Exception exc)
{
throw exc;
}
finally
{
item = null;
//determine if there are any more pages waiting
WIA.Property documentHandlingSelect = null;
WIA.Property documentHandlingStatus = null;
foreach (WIA.Property prop in device.Properties)
{
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_SELECT)
documentHandlingSelect = prop;
if (prop.PropertyID == WIA_PROPERTIES.WIA_DPS_DOCUMENT_HANDLING_STATUS)
documentHandlingStatus = prop;
}
// assume there are no more pages
hasMorePages = false;
// may not exist on flatbed scanner but required for feeder
if (documentHandlingSelect != null)
{
// check for document feeder
if ((Convert.ToUInt32(documentHandlingSelect.get_Valu e()) &
WIA_DPS_DOCUMENT_HANDLING_SELECT.FEEDER) != 0)
{
hasMorePages = ((Convert.ToUInt32(documentHandlingStatus.get_Valu e()) &
WIA_DPS_DOCUMENT_HANDLING_STATUS.FEED_READY) != 0);
}
}
}
}
return images;
}
/// <summary>
/// Gets the list of available WIA devices.
/// </summary>
/// <returns></returns>
public static List<string> GetDevices()
{
List<string> devices = new List<string>();
WIA.DeviceManager manager = new WIA.DeviceManager();
foreach (WIA.DeviceInfo info in manager.DeviceInfos)
{
devices.Add(info.DeviceID);
}
return devices;
}
}
منبع : Code Project (http://www.codeproject.com/Tips/792316/WIA-Scanner-in-Csharp-Windows-Forms)
موفق باشید

hackert41389
چهارشنبه 26 دی 1397, 00:19 صبح
سلام
میگه ارتباط با اسکنر برقرار نشد؟

hamzehsh
پنج شنبه 21 آذر 1398, 11:17 صبح
سلام
من از همین کلاس استفاده میکنم ولی فقط یک طرف کاغذ رو اسکن میکنه
توی سایتهای زیادی هم گشتم هیچ کدوم به نتیجه نرسید
برای اینکه در زمان اسکن duplex اسکن کنه چه تغییراتی باید توی کلاس ایجاد بشه؟
آیا شما راهکاری برایش سراغ دارید؟