توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ذخیره تصویر در دیتابیس
hamid_re
16 / February / 1970, 11:36 AM
سلام
یک روش به قول معروف "بیابونی" سراغ دارم، که البته خودم تستش کردم و می دونم که اصولی نیست ولی کار راه بندازه *و برای ایشون که مشکل حجم دیتابیس داره *خوب جواب میده .
توی این روش حجم دیتابیس خیلی اضافه نمیشه ولی سرعت خواندن عکس از دیتابیس و اضافه کردن عکس داخل دیتابیس پایین میاد - در این روش باید ابتدا عکس رو به رشته تبدیل کرد**( تعجب نکن میشه اینکارو کرد )***و رشته رو در دیتابیس قرار داد - برای خوندن عکس هم ابتدا رشته رو می خونی و بعد به عکس تبدیل می کنی - این تبدیل ها رو من با 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
rez1_mahtab
16 / February / 1970, 11:36 AM
نقل قول از javad_rajabloo
منم یه همچین مشکلی دارم که در این پست (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>) مطرح شده
من هم اولویتم با اینه که عکس در بانک ذخیره بشه ، چون راحت تره
اما اگه نشد مجبوریم که آدرس رو ذخیره کنیم
من روش فشرده کردن فایل bmp رو به jpg دارم که حدود 500 کیلو رو به 8 کیلو رسوندم
اگه دوست داری کدشو بذارم
اگر بذارید که عالی میشه!
javad_rajabloo
16 / February / 1970, 11:36 AM
کد مربوط به تبدیل اینه
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 رو ساپورت می کنه
دانلود (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)
rez1_mahtab
07 / October / 2013, 12:42 PM
چطور می تونم عکسها را در دیتابیس ذخیره کنم که حجم دیتابیس خیلی بالا نره
روشی برای کمپرس کردن تصاویر هست؟
من نرم افزاری دارم که با دلفی 7 و اس کیو ال 2008 نوشتم تصاویر را با استفاده از memoryStream ذخیره میکنم
از این بابت مشکلی ندارم ولی اگر تعدادی عکس داشده باشم که حجمشون حدودا 400 کیلو بایت باشه بعد از اضافه کردن
به دیتابیس حجم دیتا بیس نزدیک 200 مگابایت اضافه میشه. راه حلی هست؟
در ضمن میخوام خود عکس ها رو ذخیره کنم نه آدرسهارو.
ممنون و متشکر
javad_rajabloo
07 / October / 2013, 01:04 PM
منم یه همچین مشکلی دارم که در این پست (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>) مطرح شده
من هم اولویتم با اینه که عکس در بانک ذخیره بشه ، چون راحت تره
اما اگه نشد مجبوریم که آدرس رو ذخیره کنیم
من روش فشرده کردن فایل bmp رو به jpg دارم که حدود 500 کیلو رو به 8 کیلو رسوندم
اگه دوست داری کدشو بذارم
admin
07 / October / 2013, 04:42 PM
نقل قول از javad_rajabloo
منم یه همچین مشکلی دارم که در این پست (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>) مطرح شده
من هم اولویتم با اینه که عکس در بانک ذخیره بشه ، چون راحت تره
اما اگه نشد مجبوریم که آدرس رو ذخیره کنیم
من روش فشرده کردن فایل bmp رو به jpg دارم که حدود 500 کیلو رو به 8 کیلو رسوندم
اگه دوست داری کدشو بذارم
کاربر rez1_mahtab (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)*روش*javad_rajabloo تقریبا عاقلانه ترین روشه.چون شما حجم زیادی از عکس رو در دیتابیس ذخیره نمی کنید که بخواهید از فایل استفاده کنید و در گیر ش بشید.
لطفا کاربر javad_rajabloo کد و روشتون رو براشون بزارید.
admin
07 / October / 2013, 10:51 PM
ضمنا من یک پروژه دارم که واستون آپش میکنم.
البته ابتدا چند نکته رو میگم.
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.سوالی داشتید در همین پست ارسال کنید ...
دانلود پروژه : دانلود (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)
rez1_mahtab
09 / October / 2013, 08:59 AM
نقل قول از 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 رو ساپورت می کنه
دانلود (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)
به خاطر کد ممنون
ولی مشکل من بعد از این شروع میشه
چون هرچقدر هم حجم عکسم کم بشه حجم دیتابیس چندین برابر اون بالا میره
rez1_mahtab
09 / October / 2013, 09:08 AM
فکر میکنم بهترین راه استفاده از fileStream باشه یه امکان هست که تو sqlserver2008وجود داره
اونطور که تو help گفته بود نباید حجم دیتابیس رو بالا ببره البته هنوز اجراش نکردم
نظرتون چیه اطلاعی درباره اش دارید؟
admin
10 / October / 2013, 04:40 AM
سلام.ابتدا این پادکست رو گوش کنید* : دانلود (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)
به این آدرس ها هم سر بزنید ...
<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>
<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>
<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>
rez1_mahtab
26 / October / 2013, 01:18 AM
نقل قول از 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 است به مشکل برخوردم
ahmadi613
28 / October / 2013, 06:01 PM
با سلام
مهندس جان لطف فرماييد به هر روش كه صلاح بدانيد روش فشرده سازي عكس را كه حجم 500 k را به 8k برساند برايم در سايت قرار دهيد زيرا چيز با ارزشي است.ضمنا من يك پروژه در سيستمم پيدا كردم كه عكس ها را با نرم افزار دلفي در دتابيس access قرار مي دهد وظاهرا مشكلي ندارد.وشما بجاي دتا بيس access از جدول اس كيو ال استفاده كنيد شايد مسئله شما و كاربر ديگر حل شود .ضمنا پروژه را من ننوشته ام واگر لازم شد با خبرم سازيد تا در سايت آپلودش كنم .موفق باشيد
Powered by vBulletin® Version 4.2.2 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.