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

نام تاپیک: مشکل در ذخیره عکس اسکن شده درون دیتابیس

  1. #1

    مشکل در ذخیره عکس اسکن شده درون دیتابیس

    سلام دوستان
    من در برنامم با 2 روش عکس رو درون دیتابیس ذخیره می کنم. 1 - ضمیمه کردن عکس (انتخاب عکس از هارد با پنجره OpenFileDialog )
    2 - اسکن عکس
    با روش 1 که هیچ مشکلی ندارم ، عکس از پنجره OpenFileDialog انتخاب شده ، در pictureBox نمایش داده میشه و در نهایت در دیتابیس ذخیره میشه.
    اما در روش 2 بعد از اسکن شدن که عکس درون pictureBox قرار میگیره در هنگام ذخیره این ارور رو میده:
    Value cannot be null. Parameter name : encoder
    که داره از خطی که میخواد عکس درون pictureBox رو بخونه ایراد می گیره. در صورتی که pictureBox خالی نیست!

    کد مربوط به خواندن عکس اسکن شده در pictureBox :

    private void VSTwain1_ImageAcquired(object sender, EventArgs e)
    {
    if (pictureBox1.Image != null)
    {
    pictureBox1.Image.Dispose();
    pictureBox1.Image = null;
    }
    pictureBox1.Image = VSTwain1.GetCurrentImage();
    }


    private void buttonX1_Click(object sender, EventArgs e)
    {
    try
    {


    if (!VSTwain1.IsTwainAvailable)
    {
    if (VSTwain1.IsTwain2Compatible)
    {
    if (MessageBox.Show("TWAIN 2.0 Data Source Manager (TWAINDSM.DLL) is not found!" +
    Environment.NewLine +
    Environment.NewLine +
    "Do you want to use TWAIN 1.x Data Source Manager (TWAIN_32.DLL) ?",
    "Start Device",
    MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
    chkTwain2Compatible.Checked = false;
    VSTwain1.IsTwain2Compatible = false;
    }
    else
    return;
    }
    }


    VSTwain1.StartDevice();
    VSTwain1.ShowUI = chkShowUI.Checked;
    VSTwain1.ModalUI = chkModalUI.Checked;
    VSTwain1.ShowIndicators = chkShowIndicators.Checked;
    VSTwain1.DisableAfterAcquire = chkDisableAfterAcq.Checked;
    VSTwain1.AutoCleanBuffer = chkAutoCleanBuffer.Checked;


    if (chkShowSelector.Checked)
    {
    if (VSTwain1.SelectSource())
    VSTwain1.Acquire();
    }
    else
    VSTwain1.Acquire();


    }
    catch (Vintasoft.Twain.TwainException ex)
    {
    MessageBox.Show(ex.Message);
    }
    }







    کد مربوط به ذخیره عکس درون pictureBox در دیتابیس:



    private void btnsave_Click(object sender, EventArgs e)
    {
    try
    {
    MemoryStream ms = new MemoryStream();
    pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
    byte[] arrPic = ms.GetBuffer();
    ms.Close();


    string strPName = "";
    if (rbtnScan.Checked == true)
    strPName = textBoxX1.Text;
    if (rbtnZamime.Checked == true)
    strPName = txtZPicName.Text;


    SqlCommand cmd = new SqlCommand("INSERT INTO TScan (UserId,PName,Company,PGroup,PDate," +
    "PicName,Pic,Des) VALUES('" + txtId.Text + "','" + txtFname.Text + ' ' + txtLname.Text +
    "','" + cmbCompanyName.Text + "','" + cmbGroup.Text + "','" +
    codes.MergeTexboxesForDate(txtday, txtmonth, txtyear) + "',@PicName,@Pic,'" + txtDes.Text + "')",
    conn = new SqlConnection(codes.ReturnConnectionstring()));
    //cmd.Parameters.Add("@FCode", SqlDbType.Int).Value = sttCode;
    cmd.Parameters.Add("@PicName", SqlDbType.NVarChar, 400).Value = strPName;
    cmd.Parameters.Add("@Pic", SqlDbType.VarBinary).Value = arrPic;


    conn.Open();
    cmd.ExecuteNonQuery();
    MessageBox.Show("ضمیمه ثبت گردید");
    ShowData();
    conn.Close();
    }
    catch (SystemException ex)
    {
    MessageBox.Show(ex.Message);
    }


    }


    کد مربوط به خواندن عکس از روی هارد :


    OpenFileDialog dlgOpen = new OpenFileDialog();
    dlgOpen.Filter =
    "Image Files(*.BMP;*.JPG;*.GIF;*.JPEG)|*.BMP;*.JPG;*.GIF; *.JPEG";
    dlgOpen.Title = "انتخاب تصوير";
    if (dlgOpen.ShowDialog() == DialogResult.OK)
    {
    pictureBox1.Image = Image.FromFile(dlgOpen.FileName);
    string FilePath = dlgOpen.FileName;

    strFileName = Path.GetFileName(FilePath);
    txtZPicName.Text = strFileName;
    }


    من فقط در ذخیره عکس اسکن شده که در pictureBox هست مشکل دارم. ممنون میشم اگر کسی میدونه راهنمایی کنه.
    با سپاس

  2. #2

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

    سلام.
    شما می تونید ستون picture درون دیتابیس رو از نوع varbinary(MAX) در نظر بگیرید و عکستون رو به بایت تبدیل کرده و آن رو درون دیتابیس ذخیره کنید.
    اگر نیاز داشتین تا کدش رو براتون بزارم.

  3. #3

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



    SqlConnection conn = newSqlConnection("Data Source=.;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=11235");



    OpenFileDialog dlgOpen = newOpenFileDialog();

    dlgOpen.Filter =
    "Image Files(*.BMP;*.JPG;*.GIF;*.JPEG)|*.BMP;*.JPG;*.GIF; *.JPEG";

    dlgOpen.Title =
    "انتخاب تصوير";


    if (dlgOpen.ShowDialog() == DialogResult.OK)

    {

    pictureBox1.Image =
    Image.FromFile(dlgOpen.FileName);

    }



    try

    {


    MemoryStream ms = newMemoryStream();

    pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);


    byte[] arrPic = ms.GetBuffer();

    ms.Close();




    SqlCommand cmd = newSqlCommand("INSERT INTO PictureTable (Pic) VALUES(@Pic)");

    cmd.Parameters.Add(
    "@Pic", SqlDbType.VarBinary).Value = arrPic;



    //********* // ********

    cmd.Connection = conn;


    //********* // ********


    conn.Open();

    cmd.ExecuteNonQuery();

    conn.Close();


    MessageBox.Show("ضمیمه ثبت گردید");

    }


    catch

    {


    // exceptions

    }


    آخرین ویرایش به وسیله hashem.heidari : دوشنبه 24 شهریور 1393 در 10:18 صبح

  4. #4

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

    نقل قول نوشته شده توسط hashem.heidari مشاهده تاپیک
    سلام.
    شما می تونید ستون picture درون دیتابیس رو از نوع varbinary(MAX) در نظر بگیرید و عکستون رو به بایت تبدیل کرده و آن رو درون دیتابیس ذخیره کنید.
    اگر نیاز داشتین تا کدش رو براتون بزارم.

    تشکر ولی منم برای ذخیره همین کار رو کردم ولی اروری که داره میده یعنی pictureBox خالیه. در صورتی که پر هست و داره عکس اسکن شده رو نشون میده. در واقع همونطور که قبلا گفتم عکسی رو که از طریق پنجره openDialog از روی هارد در pictureBox میریزم رو راحت در دیتابیس ذخیره میکنه. ولی عکسی رو که از طریق اسکن در pictureBox میریزم رو ذخیره نمی کنه و پیفام میده که خالیه!!
    در ضمن من کدهایی رو که زحمت کشیدین گذاشتین رو نمی تونم ببینم.
    با سپاس

  5. #5

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

    سلام.
    شما این خط رو ننوشته بودید. قبل از خط conn.Open
    این رو بنویسید
    cmd.Connection = conn;

  6. #6

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

    تشکر ولی همونطور که گفتم با دستور ذخیره در دیتابیس مشکلی ندارم چون عکس خوانده شده از هارد رو میتونم ذخیره کنم. در ضمن کانکشن رو برای cmd داخل همون پرانتز تعریف کردم. مشکل اینه که وقتی اسکن میکنم و تصویر در picture box قرار میگیره بعد موقع خواندن مجدد این عکس از picture box پیغام میده که خالیهدر صورتی که من دارم عکس اسکن شده رو درون picture box می بینم.

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

  1. مشکل در نمایش عکس خوانده شده از دیتابیس
    نوشته شده توسط rahime در بخش VB.NET
    پاسخ: 3
    آخرین پست: پنج شنبه 25 آبان 1391, 15:39 عصر
  2. سوال: مشکل در نمایش عکس اسکن شده و ذخیره شده در بانک
    نوشته شده توسط helia64 در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: پنج شنبه 12 مرداد 1391, 13:26 عصر
  3. مشکل در ذخیره عکس flush شده تو مرورگر
    نوشته شده توسط na3er-faraji در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: دوشنبه 09 مرداد 1391, 21:19 عصر
  4. سوال: نحوه ذخیره سازی عکس اسکن شده در image در بانک
    نوشته شده توسط m_kafman در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: دوشنبه 09 شهریور 1388, 02:02 صبح

برچسب های این تاپیک

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

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