PDA

View Full Version : ذخیره ونمایش عکس.در VB.NET2003



ali2244
جمعه 22 شهریور 1387, 03:48 صبح
سلام دوستان عزیز:
مدتیه به مشکلی بر خوردم از شما عزیزان اهل فن مدد می جویم .هر چند به نظر شما تکرار تکرارها باشد .من کلی جستجو کردم وبعضی از دوستان مثالهایی داشتند ولی با اونا هم مشکلم حل نشد به همین خاطر دوباره از شما کمک میخوام.
میخوام عکس هایی را که با دیالوگ بازکردن ,روی پیکچرباکسی باز میکنم(که باز کردم) دردیتابیسم ذخیره کنم وبعد اونو در پیکچرباکسیدیگر نمایش دهم.میدونم که حداقل دو راه وجود داره یکی اینکه ادرس عکس رو ذخیره کنیم که در اون با ذخیره در جدولم مشکلی ندارم ولی با نمایش اون چرا.نمیدونم چی جلوی PICTUREBOX1.IMAGE= بزارم.
و دومی انکه خود عکس را با نوع داده IMAGEدرجدول ذخیره کنم.در این مورد هم با ذخیره کردن مشکلی ندارم ولی در نمایش ان مشکل دارم در ضمن نمیدانم چرا در جدولم بجای عکس می نویسه BINARY.
نرم افزاراییکه باهاشون کار میکنم بقرار زیر است:
VB.NET2003,SQLSERVER2000
دوستان اول خدا بعد شما . اگه ممکنه بزرگواری بفرمایید وشسته رفتهبرام عرض نمایید..در ضمن بدلیل کارم من کاربر دایمی نیستم وکم میتونم بیام وبه بزرکی خودتون ببخشید

MORTEZA66
جمعه 22 شهریور 1387, 15:30 عصر
سلام دوست من ايني كه ميگم آسون ترين و بهترين راه از نظر منه بقيم نظر خودشنو دارن
اول يه آرايه به شكل زير تعريف كن و آدرس عكس رو از هر جا به اون بده

1)==== Dim b AsByte() = My.Computer.FileSystem.ReadAllBytes("E:\sample.jpg")

دوم مي توني اون رو در اكسس به عنوان فيلد OLe Object يا text و در SQLServer هم به عنوان Image يا String يا نوع هاي مشابه خيلي معمولي Insert كني براي نمونه كدهاي زير را براي عمل Insert مي نويسم

Dim dap1 As New SqlClient.SqlDataAdapter
Dim con1 As New SqlClient.SqlConnection
con1.ConnectionString = "Data Source=sameh;Initial Catalog=test_database;User ID=sa;Password=123456"
con1.Open()
dap1.InsertCommand = New SqlClient.SqlCommand
dap1.InsertCommand.Connection = con1
dap1.InsertCommand.CommandText = "Insert into test_table values('" + Convert.ToString(b) + "')"
dap1.InsertCommand.ExecuteNonQuery()
MsgBox("successed connected and inserted")
و براي خوندن هم مي توني به اين شكل بخوني


Dim mem AsNew IO.MemoryStream(b)
pic.Image = Image.FromStream(mem)


براي اينكه حجم ديتا بيس زياد نشه كه البته زياد هم نمي شه مي توني اندازه و حجم تصوير ورودي رو كنترل كني كه اگه خواستي بگو تا بگم

kablayi
جمعه 22 شهریور 1387, 22:39 عصر
سلام ...
این حتما بدردتون میخوره ...
http://barnamenevis.org/forum/showpost.php?p=557976&postcount=4

mina.net
شنبه 23 شهریور 1387, 11:11 صبح
شاید خیلی از دوستان این روش را نپسندند ولی من از ان خیلی راضی هستم.
شما به جای ثبت عکس در بانک بهتره عکس را در خود برنامه کپی کنید و فقط آدرس عکس را ثبت کنید و برای لود مجدد عکس مقدارimage کنترل را برابر آدرسی که در بانک ذخیره کرده اید قرار دهید من یک برنامه قبلا کذاشتم تحت عنوان ذخیره عکس بدون اینکه هجم بانک را افزایش دهد.
امیدوارم مفید واقع شود.

narmafzar
جمعه 01 آذر 1387, 13:42 عصر
آدرس برنامه اي كه گفتيد قبلا گذاشتيد رو بگيد.
(برنامه اي كه بجاي خود عكس تصاوير رو ذخير كنه )
و چه طور ميشه از كريستال ريپورت اونا رو چاپ كرد؟