PDA

View Full Version : میشه کانورتور برای عکس به کد و برگشت اون نوشت؟( ذخیره عکس به در دیتا بیس)



hamed_bostan
سه شنبه 22 شهریور 1384, 09:22 صبح
با سلام.
مب خوام ببینم میشه یه برنامه ای نوشت که به جای اینکه ما عکس رو توی یه شاخه ذخیره کنیم و بعد ادرسش رو از بانک بخونیم ایا میشه کلا هکی رو داخل بانکمون دخیره کنیم؟؟؟؟

ممنون میشم یکی کمک کنه(کامل)

hamed_bostan
سه شنبه 22 شهریور 1384, 09:23 صبح
جالبه
یعنی واقعا هیچ کس هیچ جوابی برای این سوال نداره؟؟؟

Mohammad .net
سه شنبه 22 شهریور 1384, 09:50 صبح
بانک شما چیه؟

Hamedm
سه شنبه 22 شهریور 1384, 12:52 عصر
بانک شما چیه؟

سلام
اصلا مهم نیست که بانکت چی باشه.
در روش زیر میشه هر Object رو ذخیره کرد.

ذخیره در بانک:
برای این کار ابتدا باید یک Stream تعریف میکنیم.

Dim Fs As New System.IO.FileStream("Temp.jpg", IO.FileMode.Create)
آرگومان دوم بستگی به نوع کار، ممکنه تغییر کنه.
اگه یک فایلی رو که (هر فایلی) میخواهید در DB ذخیره کنید، در هارد وجود داره، آرگومان دوم رو باید IO.FileMode.Open انتخاب کنید.
در این مثال میخواهیم محتویات یک PictureBox رو مستقیما در بانک ذخیره کنیم.

PictureBox.Image.Save(Fs, System.Drawing.Imaging.ImageFormat.Jpeg)
سپس باید یک آرایه ای از Byte تعریف کنیم و طول آرایه باید به اندازه محتویات Stream باشد. بعد با خواندن Stream، آرایه رو پر میکنیم.

Dim aArray(CType(Fs.Length, Integer) - 1) As Byte
Fs.Position = 0
Fs.Read(aArray, 0, aArray.Length)
Fs.Close()
و در آخر حتما باید Stream رو ببندیم.
حالا Object مورد نظرمون در یک آرایه ذخیره شده. حالا باید بوسیله یک دستور Insert آرایه رو در بانک ذخیره کنیم. به این صورت عمل مینماییم.
در زمان ساختن دستور INSERT باید فیلدی رو که حاوی Object مورد نظرمونه رو بصورت پارامتری مقدار دهی کنیم.

CommandSQL.CommandText = "INSERT INTO TableName (FieldName) VALUES (@Pic)"
CommandSQL.Parameters.Add("@Pic", aArray)
حالا با اجرا کردن Command، فایل (Object) در بانک ذخیره میشه.

خواندن از بانک:
برای خواندن از بانک، پس از تعریف یک Byte (برای دخیره کردن Object مورد نظر که در بانک وجود دارد) محتویات فیلد حاوی Object مورد نظر رو در این متغیر میریزیم. بعد به روش زیر عمل میکنیم:

Dim Bt() As Byte = CType(ds.Tables(0).Rows(0).Item("Pic"), Byte())
Dim MS As New System.IO.MemoryStream(Bt)
picTShakhs.Image = Image.FromStream(MS)

در پناه حق موفق باشید و پرتوان