نمایش نتایج 1 تا 8 از 8

نام تاپیک: اسکن عکس در سی شارپ

  1. #1

    Question اسکن عکس در سی شارپ

    سلام و خسته نباشید
    من یه پروژه دارم که توی بخشی از اون میخوام یه تصویر رو از طریق اسکنر اسکن کرده و در دیتابیس ذخیره کنم ممنون میشم راهنمایی بفرمائید

  2. #2

    نقل قول: اسکن عکس در سی شارپ

    نقل قول نوشته شده توسط ELI994 مشاهده تاپیک
    سلام و خسته نباشید
    من یه پروژه دارم که توی بخشی از اون میخوام یه تصویر رو از طریق اسکنر اسکن کرده و در دیتابیس ذخیره کنم ممنون میشم راهنمایی بفرمائید
    Twain یک API شناخته شده و استاندارد ئه که اسکنر ها ساپورتش می کنند و کار کردن باهاش راحته. یک پکیج دلخواه تون مثلا NTwain رو به پروژه تون در ویژوال استدیو اضافه می کنید و بعد با چند سطر کد لیست اسکنر ها رو میارید یا درخواست اسکن میکنید و وقتی تصویر دریافت شد با یک رخداد متوجه میشید و دریافتش می کنید.
    اگه روی سیستم تون اسکنر واقعی ندارید که پروژه رو باهاش تست کنید، یک نسخه اسکنر مجازی رو از اینجا می توانید دانلود کنید :
    https://developer.dynamsoft.com/dwt/kb/2659

    داخل ویژوال استدیو که پروژه تون رو باز کردید، در منوی ...Tools > NuGet Package Manager > Manage NuGet Packages for Solution در زبانه Browse عنوان NTwain رو جستجو می کنید تا تیک بزنید و Install کنید.
    بعد داخل کد پروژه همچین فیلد هایی رو لازم دارید :

    public partial class Form1 : Form
    {
    private static readonly NTwain.Data.TWIdentity TwainAppId = NTwain.Data.TWIdentity.CreateFromAssembly(
    NTwain.Data.DataGroups.Image | NTwain.Data.DataGroups.Control, System.Reflection.Assembly.GetEntryAssembly());

    private NTwain.TwainSession _session;

    public Form1()
    {
    InitializeComponent();
    }


    و اینطوری session میسازید و یک اسکنر رو انتخاب می کنید :

    private void button1_Click(object sender, EventArgs e)
    {
    _session = new NTwain.TwainSession(TwainAppId);
    _session.Open();
    var source = _session.ShowSourceSelector();
    source?.Open();
    _session.DataTransferred += session_DataTransferred;
    }


    و اینطوری در اون session باز و با اون اسکنر انتخاب شده عمل اسکن رو انجام میدید (با تنظیمات نمایشی) :

    private void button2_Click(object sender, EventArgs e)
    {
    _session.CurrentSource.Enable(NTwain.SourceEnableM ode.ShowUI, true, this.Handle);
    }


    یا بی تنظیمات نمایشی :

    private void button4_Click(object sender, EventArgs e)
    {
    _session.CurrentSource.Enable(NTwain.SourceEnableM ode.NoUI, true, this.Handle);
    }


    و این عمل اسکن تصویر باعث وقوع رخداد DataTransferred میشه :

    private void session_DataTransferred(object sender, NTwain.DataTransferredEventArgs e)
    {
    using (var stream = e.GetNativeImageStream())
    {
    pictureBox1.BackgroundImage = Image.FromStream(stream);
    }
    }


    و شما می توانید اون stream رو به آرایه ای از بایت ها تبدیل کرده و در بانک اطلاعاتی ذخیره کنید :

    private void session_DataTransferred(object sender, NTwain.DataTransferredEventArgs e)
    {
    using (var memoryStream = new System.IO.MemoryStream())
    {
    using (var stream = e.GetNativeImageStream())
    {
    var buffer = new byte[8192];
    int length;
    while ((length = stream.Read(buffer, 0, buffer.Length)) > 0)
    {
    memoryStream.Write(buffer, 0, length);
    }
    var bytes = memoryStream.ToArray();
    // Write bytes in database
    }
    }
    }


    و هر زمان کار تون با اسکنر تموم شد یادتون نره که session رو ببندید :

    private void button3_Click(object sender, EventArgs e)
    {
    _session.Close();
    }

  3. #3

    نقل قول: اسکن عکس در سی شارپ

    سلام ممنون از پاسخگوییتون . فقط میشه بفرمایید api NTwain رو از کجا دانلود کنم لطفا یه لینک که بشه ازش دانلود کرد رو بدین ممنون

  4. #4
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: اسکن عکس در سی شارپ

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

  5. #5

    نقل قول: اسکن عکس در سی شارپ

    نقل قول نوشته شده توسط ELI994 مشاهده تاپیک
    سلام ممنون از پاسخگوییتون . فقط میشه بفرمایید api NTwain رو از کجا دانلود کنم لطفا یه لینک که بشه ازش دانلود کرد رو بدین ممنون
    بهتر بود از داخل همون ویژوال استدیو با NuGet که توضیح دادم اینکار رو انجام بدید، نه اینکه مستقیم دانلودش کنید.

    https://github.com/soukoku/ntwain


    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    ممنون میشم بفرمایید لایسنسش چیه؟
    MIT License

    https://raw.githubusercontent.com/so...v3/LICENSE.txt

    پروانه ام‌آی‌تی

  6. #6

    نقل قول: اسکن عکس در سی شارپ

    01.jpgسلام من توی tools اون گزینه رو نداشتم بخاطر همون خواستم دانلود کنم

  7. #7
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: اسکن عکس در سی شارپ

    اون گزینه که فرمودن تو قسمت tools->library pakage manager هست

  8. #8
    کاربر دائمی آواتار Apache66
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شــــیراز
    پست
    318

    نقل قول: اسکن عکس در سی شارپ

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    Twain یک API شناخته شده و استاندارد ئه که اسکنر ها ساپورتش می کنند و کار کردن باهاش راحته. یک پکیج دلخواه تون مثلا NTwain رو به پروژه تون در ویژوال استدیو اضافه می کنید و بعد با چند سطر کد لیست اسکنر ها رو میارید یا درخواست اسکن میکنید و وقتی تصویر دریافت شد با یک رخداد متوجه میشید و دریافتش می کنید.
    اگه روی سیستم تون اسکنر واقعی ندارید که پروژه رو باهاش تست کنید، یک نسخه اسکنر مجازی رو از اینجا می توانید دانلود کنید :
    https://developer.dynamsoft.com/dwt/kb/2659

    داخل ویژوال استدیو که پروژه تون رو باز کردید، در منوی ...Tools > NuGet Package Manager > Manage NuGet Packages for Solution در زبانه Browse عنوان NTwain رو جستجو می کنید تا تیک بزنید و Install کنید.
    بعد داخل کد پروژه همچین فیلد هایی رو لازم دارید :

    public partial class Form1 : Form
    {
    private static readonly NTwain.Data.TWIdentity TwainAppId = NTwain.Data.TWIdentity.CreateFromAssembly(
    NTwain.Data.DataGroups.Image | NTwain.Data.DataGroups.Control, System.Reflection.Assembly.GetEntryAssembly());

    private NTwain.TwainSession _session;

    public Form1()
    {
    InitializeComponent();
    }


    و اینطوری session میسازید و یک اسکنر رو انتخاب می کنید :

    private void button1_Click(object sender, EventArgs e)
    {
    _session = new NTwain.TwainSession(TwainAppId);
    _session.Open();
    var source = _session.ShowSourceSelector();
    source?.Open();
    _session.DataTransferred += session_DataTransferred;
    }


    و اینطوری در اون session باز و با اون اسکنر انتخاب شده عمل اسکن رو انجام میدید (با تنظیمات نمایشی) :

    private void button2_Click(object sender, EventArgs e)
    {
    _session.CurrentSource.Enable(NTwain.SourceEnableM ode.ShowUI, true, this.Handle);
    }


    یا بی تنظیمات نمایشی :

    private void button4_Click(object sender, EventArgs e)
    {
    _session.CurrentSource.Enable(NTwain.SourceEnableM ode.NoUI, true, this.Handle);
    }


    و این عمل اسکن تصویر باعث وقوع رخداد DataTransferred میشه :

    private void session_DataTransferred(object sender, NTwain.DataTransferredEventArgs e)
    {
    using (var stream = e.GetNativeImageStream())
    {
    pictureBox1.BackgroundImage = Image.FromStream(stream);
    }
    }


    و شما می توانید اون stream رو به آرایه ای از بایت ها تبدیل کرده و در بانک اطلاعاتی ذخیره کنید :

    private void session_DataTransferred(object sender, NTwain.DataTransferredEventArgs e)
    {
    using (var memoryStream = new System.IO.MemoryStream())
    {
    using (var stream = e.GetNativeImageStream())
    {
    var buffer = new byte[8192];
    int length;
    while ((length = stream.Read(buffer, 0, buffer.Length)) > 0)
    {
    memoryStream.Write(buffer, 0, length);
    }
    var bytes = memoryStream.ToArray();
    // Write bytes in database
    }
    }
    }


    و هر زمان کار تون با اسکنر تموم شد یادتون نره که session رو ببندید :

    private void button3_Click(object sender, EventArgs e)
    {
    _session.Close();
    }

    چطوری میشه کیفیت عکس جهت اسکن مشخص کنیم؟

تاپیک های مشابه

  1. مبتدی: اموزش ساخت قالب فارسی و ریسپانسیو وردپرسی رو کسی داره ؟
    نوشته شده توسط mohammadreza65 در بخش PHP
    پاسخ: 4
    آخرین پست: چهارشنبه 26 آبان 1400, 10:55 صبح
  2. پاسخ: 7
    آخرین پست: پنج شنبه 31 اردیبهشت 1394, 20:28 عصر
  3. پاسخ: 0
    آخرین پست: چهارشنبه 30 بهمن 1392, 09:31 صبح
  4. سورس فارسی نویس، نوشتن فارسی در برنامه هایی که زبان فارسی رو پشتیبانی نمیکنند
    نوشته شده توسط سید حمید حق پرست در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: چهارشنبه 02 بهمن 1392, 10:00 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •