PDA

View Full Version : سوال: بازگشت عکس نوع باینری به PictureBox با ورود به سطر گرید



ashkan1234
سه شنبه 18 تیر 1392, 19:53 عصر
دوستان در دیتا بیس یه فیلد دارم از نوع باینری برای ذخیره عکس!
با ذخیره کردنش مشکلی ندارم!(نوع بایت رو میریزم توی باینری)
ولی وقتی میخوام عکس رو برگردونم تو پیکچر باکس گیر میده که نمیتونه نوع باینری رو به بایت کانورت کنه!
چه کنم؟
اینم کد:
byte[] arrPic = (byte[])inf.INF_Logo;
MemoryStream ms2 = new MemoryStream(arrPic);
PBPicture.Image = Image.FromStream(ms2);

amir200h
سه شنبه 18 تیر 1392, 20:07 عصر
byte[] Img = (byte[])cmd.ExecuteScalar(); string str = Convert.ToString(DateTime.Now.ToFileTime());
FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);
fs.Write(Img, 0, Img.Length);
fs.Flush();
fs.Close();
pictureBox2.Image = Image.FromFile(str);


http://barnamenevis.org/showthread.php?407117-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9-%28%D8%AF%D8%B1-%D8%AE%D9%88%D8%AF-%D8%A8%D8%A7%D9%86%DA%A9-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF%29

ashkan1234
سه شنبه 18 تیر 1392, 20:14 عصر
byte[] Img = (byte[])cmd.ExecuteScalar(); string str = Convert.ToString(DateTime.Now.ToFileTime());
FileStream fs = new FileStream(str, FileMode.CreateNew, FileAccess.Write);
fs.Write(Img, 0, Img.Length);
fs.Flush();
fs.Close();
pictureBox2.Image = Image.FromFile(str);


http://barnamenevis.org/showthread.php?407117-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9-%28%D8%AF%D8%B1-%D8%AE%D9%88%D8%AF-%D8%A8%D8%A7%D9%86%DA%A9-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF%29
ممنون!
فقط یکمی فرق داره چون من Linq کار کردم و شما Ado.net
میشه بیشتر راهنمایی بفرمایید؟

Mahmoud.Afrad
سه شنبه 18 تیر 1392, 21:10 عصر
نوع INF_Logo دقیقا چیه؟(همونی که توی دیتابیس زده)
متن خطا رو هم کامل بزار.

ashkan1234
سه شنبه 18 تیر 1392, 22:53 عصر
نوع INF_Logo دقیقا چیه؟(همونی که توی دیتابیس زده)
متن خطا رو هم کامل بزار.
عرض کردم که نوعش باینری هستش!
VarBinary(MAX)
اینم متن خطا
Error 1 Cannot convert type 'System.Data.Linq.Binary' to 'byte[]'

ashkan1234
چهارشنبه 19 تیر 1392, 16:33 عصر
یعنی کسی تجربه لینک رو نداشته؟

Mahmoud.Afrad
چهارشنبه 19 تیر 1392, 19:04 عصر
من تست کردم ، اگر نوع ستون VarBibary باشه نوع پراپرتی entity از نوع byte[] خواهد بود و نیاز به کار دیگه ای نداشت.
اما شما از متد toarray استفاده کن:
byte[] arrPic = inf.INF_Logo.ToArray();

ashkan1234
چهارشنبه 19 تیر 1392, 20:01 عصر
من تست کردم ، اگر نوع ستون VarBibary باشه نوع پراپرتی entity از نوع byte[] خواهد بود و نیاز به کار دیگه ای نداشت.
اما شما از متد toarray استفاده کن:
byte[] arrPic = inf.INF_Logo.ToArray();
ممنون از پاسختون!
این کارو کرده بودم و چون به مشکل برخوردم این تاپیک رو ایجاد کردم!
وقتی آرایه اش میکنم این خطا رو میده:
Parameter is not valid.

Mahmoud.Afrad
پنج شنبه 20 تیر 1392, 00:11 صبح
اگر میتونی پروژت رو بزار(یا پیام خصوصی کن) یا اینکه یه پروژه جدید ایجاد کن و توی اون تست کن اگر مشکل پابرجا بود این پروژه رو بزار تا ببینم.

hosaini
پنج شنبه 20 تیر 1392, 06:49 صبح
ImageConverter LImageConverterA04 = new ImageConverter();



Byte[] LByteA04 =

(

byte[])a02TableAdapter.ScalarQuerypic(AS.UserID);



this.vistaPictureBox1.Image = (LByteA04 == null)

?

null

: (

Image)LImageConverterA04.ConvertFrom(LByteA04);

ashkan1234
پنج شنبه 20 تیر 1392, 10:05 صبح
اگر میتونی پروژت رو بزار(یا پیام خصوصی کن) یا اینکه یه پروژه جدید ایجاد کن و توی اون تست کن اگر مشکل پابرجا بود این پروژه رو بزار تا ببینم.

مشکل پابرجاست و پیام خصوصی براتون ارسال شد!

ashkan1234
جمعه 21 تیر 1392, 22:46 عصر
آقا محمود فایلی که برام ارسال کردید درست عمل میکنه ولی یه ایرادی داره!
این مدلی که شما کدنویسی نمودید از تکست باکس دوم آدرس رو میگیره و در دیتا بیس ذخیره میکنه!
خوب حالا اگه کاربر بخواد تکست باکس ۱ رو ادیت کنه دوباره باید عکس رو آپلود کنه تا آدرسش وارد تکست باکس 2 بشه!
-----------------
واسه سوال دوم هم اگه اون شرط رو هم بردارم بازهم تغییرا ت ذخیره نمشن!

Mahmoud.Afrad
جمعه 21 تیر 1392, 23:59 عصر
اون چیزی که لینکشو پیام خصوصی کردم یه نمونه بود برای واکشی عکس از دیتابیس.

واسه ذخیره نشدن همونطور که گفتم جدول ستینگ کلیداصلی نداره. کلیداصلی باید اضافه کنی و یا چون توی این جدول یک رکورد فقط ذخیره میشه هر سه ستون رو کلیداصلی کن.

واسه ویرایش عکس یک رکورد ، فرقی نداره عکس جدید رو به آرایه بایت تبدیل میکنی و به پراپرتی عکس رکورد مورد نظر نسبت میدی و تغییرات رو سیو میکنی.

ashkan1234
شنبه 22 تیر 1392, 00:10 صبح
اون چیزی که لینکشو پیام خصوصی کردم یه نمونه بود برای واکشی عکس از دیتابیس.

واسه ذخیره نشدن همونطور که گفتم جدول ستینگ کلیداصلی نداره. کلیداصلی باید اضافه کنی و یا چون توی این جدول یک رکورد فقط ذخیره میشه هر سه ستون رو کلیداصلی کن.

واسه ویرایش عکس یک رکورد ، فرقی نداره عکس جدید رو به آرایه بایت تبدیل میکنی و به پراپرتی عکس رکورد مورد نظر نسبت میدی و تغییرات رو سیو میکنی.
خیلی ممنون!
واسه عکس بعدا چک میکنم اگه مشکلی بود مزاحم میشم.
ولی واسه ستینگ:اگه همه فیلدها رو کلید اصلی قرار بدم دیگه اجازه وبرایش نمیده!همونطور که میدونید مشکلم همین ویرایش هستش!

Mahmoud.Afrad
شنبه 22 تیر 1392, 03:22 صبح
پس باید یه ستون جدید برای کلیداصلی ایجاد کنی.

ashkan1234
شنبه 22 تیر 1392, 10:16 صبح
پس باید یه ستون جدید برای کلیداصلی ایجاد کنی.
بله!ممنون!
فقط یه چیزی برام عجیب و حل نشدست:
در هر حال من تو کدهام گفتم که برو اولین رکورد رو انتخاب کن ولی تا زمانی که فیلدی با کلیداصلی تعریف نشده تغییرات ست نشده!
ولی وقتی کلید اصلی قرار داده بشه به راحتی عملیات رو ذخیره میکنه!
این زبان لینک چه گیری با کلید اصلی داره؟!
ممنون میشم اگه کمی توضیح بدید!
آقا محمود شما حکم استاد مارو داری و خیلی چیزا ازتون یادگرفتیم!
ممنون از لطفتون:لبخند:

mohammad5593
چهارشنبه 08 آبان 1392, 06:22 صبح
باسلام خدمت اساتید محترم
اینجا ظاهرا فقط ما غریبیم
اگه قراره همه چی را خصوصی ارسال کنید چرا تاپیک می زنید و الکی ملت را سرکار میزارید . برید خصوصی مشکلاتتون را حل کنید
الان مشکل جنابعالی حل شد ولی مشکل بقیه هنوز پابرجاست و مجبوریم دوباره همین سوال را مطرح کنیم
بعد چه اتفاقی می افته مدیر محترم حذفش میکنه میگه تکراریست!!!!؟
لطفا فرصت سوزی نکنید