آخرين پست هاي ارسالي انجمن ايران دلفي

تماشای رایگان فیلم ایرانی ، خارجی و کودک آکادمی دلفی
نمایش نتایج: از 1 به 12 از 12

موضوع: ذخیره تصویر در دیتابیس

Hybrid View

  1. #1
    کاربر سایت rez1_mahtab آواتار ها
    تاریخ عضویت
    May 2013
    نوشته ها
    17
    تشکر ها
    3
    تشکر شده 5 بار در 4 ارسال.

    ذخیره تصویر در دیتابیس

    چطور می تونم عکسها را در دیتابیس ذخیره کنم که حجم دیتابیس خیلی بالا نره
    روشی برای کمپرس کردن تصاویر هست؟

    من نرم افزاری دارم که با دلفی 7 و اس کیو ال 2008 نوشتم تصاویر را با استفاده از memoryStream ذخیره میکنم
    از این بابت مشکلی ندارم ولی اگر تعدادی عکس داشده باشم که حجمشون حدودا 400 کیلو بایت باشه بعد از اضافه کردن
    به دیتابیس حجم دیتا بیس نزدیک 200 مگابایت اضافه میشه. راه حلی هست؟

    در ضمن میخوام خود عکس ها رو ذخیره کنم نه آدرسهارو.

    ممنون و متشکر


  2. کاربر مقابل از rez1_mahtab عزیز به خاطر این پست مفید تشکر کرده است:

    mahan7878 (10 / March / 2021)

  3. #2
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.
    منم یه همچین مشکلی دارم که در [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] مطرح شده

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

    اما اگه نشد مجبوریم که آدرس رو ذخیره کنیم

    من روش فشرده کردن فایل bmp رو به jpg دارم که حدود 500 کیلو رو به 8 کیلو رسوندم

    اگه دوست داری کدشو بذارم

  4. کاربر مقابل از javad_rajabloo عزیز به خاطر این پست مفید تشکر کرده است:

    mahan7878 (10 / March / 2021)

  5. #3
    مدیرکل سایت admin آواتار ها
    تاریخ عضویت
    September 2008
    محل سکونت
    تهران ، آیسک
    سن
    39
    نوشته ها
    522
    تشکر ها
    247
    تشکر شده 250 بار در 160 ارسال.
    Blog Entries
    1
    نقل قول از javad_rajabloo
    منم یه همچین مشکلی دارم که در [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] مطرح شده

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

    اما اگه نشد مجبوریم که آدرس رو ذخیره کنیم

    من روش فشرده کردن فایل bmp رو به jpg دارم که حدود 500 کیلو رو به 8 کیلو رسوندم

    اگه دوست داری کدشو بذارم



    کاربر [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]*روش*javad_rajabloo تقریبا عاقلانه ترین روشه.چون شما حجم زیادی از عکس رو در دیتابیس ذخیره نمی کنید که بخواهید از فایل استفاده کنید و در گیر ش بشید.
    لطفا کاربر javad_rajabloo کد و روشتون رو براشون بزارید.
    دلفی ،*جذاب ترین زبان طراحی نرم افزار ...

  6. کاربر مقابل از admin عزیز به خاطر این پست مفید تشکر کرده است:

    mahan7878 (10 / March / 2021)

  7. #4
    مدیرکل سایت admin آواتار ها
    تاریخ عضویت
    September 2008
    محل سکونت
    تهران ، آیسک
    سن
    39
    نوشته ها
    522
    تشکر ها
    247
    تشکر شده 250 بار در 160 ارسال.
    Blog Entries
    1
    ضمنا من یک پروژه دارم که واستون آپش میکنم.
    البته ابتدا چند نکته رو میگم.
    1.دیتابیس شما SQLServer می باشد و اسکریپت مربوط به ساخت دیتابیس و جدول در فایل تکست با نام saveImage.txt
    قرار داده شده.
    بدین صورت :
    کد:

    کد:
    USE master
    GO
    
    CREATE DATABASE saveImage
    GO
    
    USE saveImage
    GO
    
    
    CREATE TABLE personel(
    	[id] [int] IDENTITY(1,1) NOT NULL,
    	[F_name] [nvarchar](50) NULL,
    	[L_name] [nvarchar](50) NULL,
    	[pic] [image] NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    
    GO

    2.فایلی که با پسوند udl براتون گذاشتم به خاطر ارتباط آسان و بدون دردسر با دیتابیس هستش و البته پویا و ویزاردی (بازش کنید میگیرید که منظورم چیه )
    3.سوالی داشتید در همین پست ارسال کنید ...

    دانلود پروژه : [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    دلفی ،*جذاب ترین زبان طراحی نرم افزار ...

  8. کاربر مقابل از admin عزیز به خاطر این پست مفید تشکر کرده است:

    mahan7878 (10 / March / 2021)

  9. #5
    کاربر سایت rez1_mahtab آواتار ها
    تاریخ عضویت
    May 2013
    نوشته ها
    17
    تشکر ها
    3
    تشکر شده 5 بار در 4 ارسال.
    نقل قول از javad_rajabloo
    منم یه همچین مشکلی دارم که در [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] مطرح شده

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

    اما اگه نشد مجبوریم که آدرس رو ذخیره کنیم

    من روش فشرده کردن فایل bmp رو به jpg دارم که حدود 500 کیلو رو به 8 کیلو رسوندم

    اگه دوست داری کدشو بذارم



    اگر بذارید که عالی میشه!


  10. کاربر مقابل از rez1_mahtab عزیز به خاطر این پست مفید تشکر کرده است:

    mahan7878 (10 / March / 2021)

  11. #6
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.
    کد مربوط به تبدیل اینه

    var
    *MyJPEG : TJPEGImage;
    *MyBMP* : TBitmap;
    begin
    *MyBMP := TBitmap.Create;
    *with MyBMP do
    ** try
    **** {Cargamos el BMP}
    **** {Load the BMP}
    **** LoadFromFile("filename.bmp"
    **** MyJPEG := TJPEGImage.Create;
    **** with MyJPEG do begin
    ****** Assign(MyBMP);
    ****** {Grabamos el JPG}
    ****** {Save the JPG}
    ****** SaveToFile("filename.JPG"
    ****** Free;
    **** end;
    ** finally
    **** Free;
    ** end
    end;
    البته این کد ، فایل bmp رو به jpg تبدیل میکنه و حجمش رو خیلی پایین میاره

    این کامپوننت هم یک db image هست که با اونی که داخل خود دلفی هست فرق میکنه و فرقش هم اینه که فایلهای jpg رو ساپورت می کنه
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



  12. #7
    کاربر سایت rez1_mahtab آواتار ها
    تاریخ عضویت
    May 2013
    نوشته ها
    17
    تشکر ها
    3
    تشکر شده 5 بار در 4 ارسال.
    نقل قول از javad_rajabloo
    کد مربوط به تبدیل اینه

    var
    *MyJPEG : TJPEGImage;
    *MyBMP* : TBitmap;
    begin
    *MyBMP := TBitmap.Create;
    *with MyBMP do
    ** try
    **** {Cargamos el BMP}
    **** {Load the BMP}
    **** LoadFromFile("filename.bmp"
    **** MyJPEG := TJPEGImage.Create;
    **** with MyJPEG do begin
    ****** Assign(MyBMP);
    ****** {Grabamos el JPG}
    ****** {Save the JPG}
    ****** SaveToFile("filename.JPG"
    ****** Free;
    **** end;
    ** finally
    **** Free;
    ** end
    end;
    البته این کد ، فایل bmp رو به jpg تبدیل میکنه و حجمش رو خیلی پایین میاره

    این کامپوننت هم یک db image هست که با اونی که داخل خود دلفی هست فرق میکنه و فرقش هم اینه که فایلهای jpg رو ساپورت می کنه
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]





    به خاطر کد ممنون
    ولی مشکل من بعد از این شروع میشه
    چون هرچقدر هم حجم عکسم کم بشه حجم دیتابیس چندین برابر اون بالا میره


  13. #8
    کاربر سایت rez1_mahtab آواتار ها
    تاریخ عضویت
    May 2013
    نوشته ها
    17
    تشکر ها
    3
    تشکر شده 5 بار در 4 ارسال.
    فکر میکنم بهترین راه استفاده از fileStream باشه یه امکان هست که تو sqlserver2008وجود داره
    اونطور که تو help گفته بود نباید حجم دیتابیس رو بالا ببره البته هنوز اجراش نکردم
    نظرتون چیه اطلاعی درباره اش دارید؟

  14. #9
    مدیرکل سایت admin آواتار ها
    تاریخ عضویت
    September 2008
    محل سکونت
    تهران ، آیسک
    سن
    39
    نوشته ها
    522
    تشکر ها
    247
    تشکر شده 250 بار در 160 ارسال.
    Blog Entries
    1
    سلام.ابتدا این پادکست رو گوش کنید* : [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    به این آدرس ها هم سر بزنید ...

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    دلفی ،*جذاب ترین زبان طراحی نرم افزار ...

  15. #10
    کاربر سایت hamid_re آواتار ها
    تاریخ عضویت
    October 2013
    سن
    11
    نوشته ها
    8
    تشکر ها
    0
    تشکر شده 0 بار در 0 ارسال.
    سلام
    یک روش به قول معروف "بیابونی" سراغ دارم، که البته خودم تستش کردم و می دونم که اصولی نیست ولی کار راه بندازه *و برای ایشون که مشکل حجم دیتابیس داره *خوب جواب میده .
    توی این روش حجم دیتابیس خیلی اضافه نمیشه ولی سرعت خواندن عکس از دیتابیس و اضافه کردن عکس داخل دیتابیس پایین میاد - در این روش باید ابتدا عکس رو به رشته تبدیل کرد**( تعجب نکن میشه اینکارو کرد )***و رشته رو در دیتابیس قرار داد - برای خوندن عکس هم ابتدا رشته رو می خونی و بعد به عکس تبدیل می کنی - این تبدیل ها رو من با vb.net انجام دادم - کد دلفی رو ندارم کد های vb *رو قرار می دم خودت دیگه تبدیلش کن به دلفی ( اگه می تونی ) *
    *
    کد:

    کد:
     Public Function ImageToStr(ByVal ImageAdr As String) As String* * * * 
    * * * * * * Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(ImageAdr)* * *
     * * ** * * Dim ms = New System.IO.MemoryStream()*
     * ** * * * img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)* 
     ** * * * * Dim b64 As String = Convert.ToBase64String(ms.ToArray())* 
     * ** * * * img.Dispose()* *
     * ** * * * ms.Close()* * * * 
     * * * * * Return b64* 
     * * * * End Function
    
     Public Function StrToImage(ByVal Strb64 As String) As Image
     * * * * * *Dim b() As Byte
     * * * * * *b = Convert.FromBase64String(Strb64)
     * * * * * *Dim ms = New System.IO.MemoryStream(b)
     * * * * * *Dim img = System.Drawing.Image.FromStream(ms)
     * * * * * *ms.Close()
     * * * * * *Return img
    
     * * * *End Function


  16. #11
    کاربر سایت rez1_mahtab آواتار ها
    تاریخ عضویت
    May 2013
    نوشته ها
    17
    تشکر ها
    3
    تشکر شده 5 بار در 4 ارسال.
    نقل قول از hamid_re
    سلام
    یک روش به قول معروف "بیابونی" سراغ دارم، که البته خودم تستش کردم و می دونم که اصولی نیست ولی کار راه بندازه *و برای ایشون که مشکل حجم دیتابیس داره *خوب جواب میده .
    توی این روش حجم دیتابیس خیلی اضافه نمیشه ولی سرعت خواندن عکس از دیتابیس و اضافه کردن عکس داخل دیتابیس پایین میاد - در این روش باید ابتدا عکس رو به رشته تبدیل کرد**( تعجب نکن میشه اینکارو کرد )***و رشته رو در دیتابیس قرار داد - برای خوندن عکس هم ابتدا رشته رو می خونی و بعد به عکس تبدیل می کنی - این تبدیل ها رو من با vb.net انجام دادم - کد دلفی رو ندارم کد های vb *رو قرار می دم خودت دیگه تبدیلش کن به دلفی ( اگه می تونی ) *
    *
    کد:

    کد:
     Public Function ImageToStr(ByVal ImageAdr As String) As String* * * * 
    * * * * * * Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(ImageAdr)* * *
     * * ** * * Dim ms = New System.IO.MemoryStream()*
     * ** * * * img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)* 
     ** * * * * Dim b64 As String = Convert.ToBase64String(ms.ToArray())* 
     * ** * * * img.Dispose()* *
     * ** * * * ms.Close()* * * * 
     * * * * * Return b64* 
     * * * * End Function
    
     Public Function StrToImage(ByVal Strb64 As String) As Image
     * * * * * *Dim b() As Byte
     * * * * * *b = Convert.FromBase64String(Strb64)
     * * * * * *Dim ms = New System.IO.MemoryStream(b)
     * * * * * *Dim img = System.Drawing.Image.FromStream(ms)
     * * * * * *ms.Close()
     * * * * * *Return img
    
     * * * *End Function




    کد c تبدیل به رشته و برعکس رو دیده بودم ولی نتونستم به دلفی تبدیلش کنم چون قالب تصاویر tiff است به مشکل برخوردم

  17. #12
    مدیر انجمن ahmadi613 آواتار ها
    تاریخ عضویت
    June 2013
    سن
    11
    نوشته ها
    66
    تشکر ها
    6
    تشکر شده 9 بار در 5 ارسال.
    با سلام
    مهندس جان لطف فرماييد به هر روش كه صلاح بدانيد روش فشرده سازي عكس را كه حجم 500 k را به 8k برساند برايم در سايت قرار دهيد زيرا چيز با ارزشي است.ضمنا من يك پروژه در سيستمم پيدا كردم كه عكس ها را با نرم افزار دلفي در دتابيس access قرار مي دهد وظاهرا مشكلي ندارد.وشما بجاي دتا بيس access از جدول اس كيو ال استفاده كنيد شايد مسئله شما و كاربر ديگر حل شود .ضمنا پروژه را من ننوشته ام واگر لازم شد با خبرم سازيد تا در سايت آپلودش كنم .موفق باشيد
    با صداقت و دوري از ريا زندگي شيرين وشيرين تر مي شود...

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

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