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

نام تاپیک: ذخيره عكس در ديتا بيس sql

  1. #1

    ذخيره عكس در ديتا بيس sql

    سلام
    من مي خواهم عكس را درون بانك اطلاعاتي به گونه اي ذخيره كنم كه قابليت گزارش گيري توسط كريستال ريپورت را داشته باشد .
    خودم اول فيلد عكس در بانك را به صورت image تعريف كرده بودم ولي در زمان ذخيره اطلاعات عكس ذخيره نمي شد .
    سرچ كردم ولي چيزي پيدا نمي كنه
    از راهنمايي تون ممنون مي شم .

  2. #2

    نقل قول: ذخيره عكس در ديتا بيس sql

    تو برنامه ها من ديدم كه با مسير ذخيره عكس ، عكس را توي DB ذخيره مي كنند . شما هم همين كار را كن و هنگام واكشي داده ها و نمايش بوسيله كريستال يه object از نوع image ايجاد كن و آدرس عكس را براي نمايش همون مقدار ذخيره شده در DB قرار بده عكس نمايش داده مي شه

  3. #3
    کاربر دائمی آواتار saeed_rezaei
    تاریخ عضویت
    آبان 1385
    محل زندگی
    ایلام
    پست
    430

    نقل قول: ذخيره عكس در ديتا بيس sql

    سلام
    خودم اول فيلد عكس در بانك را به صورت image تعريف كرده بودم ولي در زمان ذخيره اطلاعات عكس ذخيره نمي شد
    از نمونه کدهای زیر جهت نوشتن و خواندن عکس در بانک اطلاعاتی می تونی استفاده کنی.
    در این نمونه کد، قصد آن است که تصویر موجود در picturebox1 در بانک اطلاعاتی sql نگهداری شود.
    همچنین فرض شده که جدول مربوطه تنها یک فیلد با نام picture و نوع image داره.

    این کد برای ذخیره تصویر استفاده مشه.

    Dim ms AsNew MemoryStream()
    PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
    Dim arrImage() AsByte = ms.GetBuffer

    ms.Close()

    Dim myConnection AsNew SqlConnection(connectionString)
    Dim strSQL AsString = "INSERT INTO Picture ( Picture) VALUES (@Picture)"

    Dim cmd AsNew SqlCommand(strSQL, myConnection )
    cmd.Parameters.Add(New SqlParameter("@Picture",SqlDbType.Image)).Value = arrImage

    myConnection .Open()
    cmd.ExecuteNonQuery()
    myConnection .Close()



    و اما برای نمایش مجدد تصویر در picturebox


    Dim arrPicture() AsByte = CType(dsPictures.Tables(0).Rows(?)("Picture"), Byte())
    Dim ms AsNew MemoryStream(arrPicture)
    With PictureBox2
    .Image = Image.FromStream(ms)
    .SizeMode = PictureBoxSizeMode.StretchImage
    .BorderStyle = BorderStyle.Fixed3D
    EndWith

    نمونه کد بالا تصویر رو از بانک نمایش می ده.
    همچنین در این کد، تصویر مربوطه در رکورد ؟ ذخیره شده.
    فکر نمی کنم کدها نیازی به توضیح بیشتری داشته باشن.

    قابليت گزارش گيري توسط كريستال ريپورت را داشته باشد
    و امااینکه چطور این رو در کریستال ریپورت نشون داد. تاحالا واسه من همچین کاری پیش نیومده. اما این روشی که دوستمون negar_programmer گفتند، اگه درست باشه می تونید از تلفیق این کدها و روش دوستمون مشکلتون رو حل کنید.

  4. #4

    نقل قول: ذخيره عكس در ديتا بيس sql

    با تشكر از پاسخ هاي شما
    من ترجيحا از آدرس فايل را با كد زير ذخيره كردم
    در رويداد دريافت فايل تصوير

    IfMe.OpenFileDialogpicture.ShowDialog() = Windows.Forms.DialogResult.OK Then
    pictureperson = OpenFileDialogpicture.FileName
    PictureBoxaks.Load(pictureperson)
    Me.Validate()
    Dim rowperson() As DataRow
    rowperson = PersoneliDataSet1.moshakhasatpersonel.Select("codepersoneli='" + CodepersoneliTextBoxX.Text + "'")
    rowperson(0).Item("aks") = pictureperson.ToString
    EndIf

    حالا ديگر با يك ذخيره ساده آدرس عكس ذخيره مي شود
    براي لود آن

    Dim rowperson() As DataRow
    If CodepersoneliTextBoxX.Text <> ""Then
    rowperson = PersoneliDataSet1.moshakhasatpersonel.Select("codepersoneli='" + CodepersoneliTextBoxX.Text + "'")
    pictureperson = rowperson(0).Item("aks").ToString
    If pictureperson <> ""Then
    PictureBoxaks.Load(pictureperson)
    EndIf

  5. #5

    نقل قول: ذخيره عكس در ديتا بيس sql

    [quote=saeed_rezaei;538588]سلام

    از نمونه کدهای زیر جهت نوشتن و خواندن عکس در بانک اطلاعاتی می تونی استفاده کنی.
    در این نمونه کد، قصد آن است که تصویر موجود در picturebox1 در بانک اطلاعاتی sql نگهداری شود.
    همچنین فرض شده که جدول مربوطه تنها یک فیلد با نام picture و نوع image داره.

    این کد برای ذخیره تصویر استفاده مشه.

    Dim ms AsNew MemoryStream()
    PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
    Dim arrImage() AsByte = ms.GetBuffer

    ms.Close()

    Dim myConnection AsNew SqlConnection(connectionString)
    Dim strSQL AsString = "INSERT INTO Picture ( Picture) VALUES (@Picture)"

    Dim cmd AsNew SqlCommand(strSQL, myConnection )
    cmd.Parameters.Add(New SqlParameter("@Picture",SqlDbType.Image)).Value = arrImage

    myConnection .Open()
    cmd.ExecuteNonQuery()
    myConnection .Close()



    و اما برای نمایش مجدد تصویر در picturebox


    Dim arrPicture() AsByte = CType(dsPictures.Tables(0).Rows(?)("Picture"), Byte())
    Dim ms AsNew MemoryStream(arrPicture)
    With PictureBox2
    .Image = Image.FromStream(ms)
    .SizeMode = PictureBoxSizeMode.StretchImage
    .BorderStyle = BorderStyle.Fixed3D
    EndWith

    نمونه کد بالا تصویر رو از بانک نمایش می ده.
    همچنین در این کد، تصویر مربوطه در رکورد ؟ ذخیره شده.
    فکر نمی کنم کدها نیازی به توضیح بیشتری داشته باشن.


    ببخشید میون کلامتون میام
    اما وقتی اینکارو میکنیم بعد از اینکه عکس بازیابی شد و در picBox قرار گرفت چرا نمیشه با دستور savepicture اون تو فایل ذخیره کرد؟؟؟؟؟؟؟؟؟؟

  6. #6
    کاربر دائمی آواتار saeed_rezaei
    تاریخ عضویت
    آبان 1385
    محل زندگی
    ایلام
    پست
    430

    نقل قول: ذخيره عكس در ديتا بيس sql

    سلام

    اما وقتی اینکارو میکنیم بعد از اینکه عکس بازیابی شد و در picBox قرار گرفت چرا نمیشه با دستور savepicture اون تو فایل ذخیره کرد؟؟؟؟؟؟؟؟؟؟
    وقتی تصویر در بانک ذخیره می شه به صورت بایت نگهداری می شه. در هنگام بازیابی این بایتها در یک memory stream قرار می گیرن و در picturebox لود می شه. چون memory stream یک رشته از اطلاعات در حافظه کامپیوتر هستش، برای ذخیره سازی نمی شه به صورت مستقیم از save استفاده کرد.
    برای ذخیره تصویر بایستی روش دیگه ای رو استفاده کرد.
    من ترجیح می دم که اون بایتهای از اطلاعات که توی حافظه هست رو مستقیما بیارم توی یه filestream که قابلیت ذخیره سازی روی هارد دیسک رو داشته باشه.
    نمونه کد زیر این کار رو انجام می ده.
    در این نمونه کد تصویر در مسیر f:\1.jpg ذخیره می شه.



    Dim fs2 AsNew IO.FileStream("f:\1.jpg", FileMode.Create, FileAccess.Write, FileShare.None)
    fs2.Write(arrPicture, 0, arrPicture.Length)
    fs2.Close()


    لازم به توضیح هست که این قطعه کد رو باید در ادامه کدهای فراخوانی تصویر قرار داد.

  7. #7
    کاربر دائمی آواتار parsavb
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    جلوي کامپيوتر
    پست
    210

    نقل قول: ذخيره عكس در ديتا بيس sql

    یه نگاهی به این برنامه بندازید شاید به دردتون خورد
    https://barnamenevis.org/attach...4&d=1212407960

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

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