تبدیل system.windows.forms.picture به byte[] در wpf

سوال 

#C

توسط bivatan در 1 سال پیش
2 10.2k 4 1 سال پیش
bivatan digisys
0

سلام من یه WindowsFormsHost دارم که در واقع یه باکسه که توش تصویر اثر انگشت بعد از اسکن نشون داده میشه و Xaml اون به صورت زیره:

<WindowsFormsHost x:Name="form" Cursor="Pen"  HorizontalAlignment="Left" Height="115" Margin="40,191,0,0" VerticalAlignment="Top" Width="108" MouseDown="form_MouseDown"/>

کدم هم به صورت زیر هست :

public win_add_edit_personel()
        {
            InitializeComponent();
            pbImageFrame = new PictureBox();
            form.Child = pbImageFrame;
        }

با این کار من یه picturebox از نوع system.windows.forms داخل wpf دارم . چون نمیتونستم image رو به اسکنر بشناسونم مجبور شدم ازین راه استفاده کنم .

تصویر به درستی بعد از اسکن نشون داده میشه . حالا من میخوام با زدن دکمه ثبت این تصویر داخل دیتا بیس نشون داده بشه .یعنی این عکس به آرایه ای از بایت تبدیل بشه . جست و جو کردم کد زیر رو پیدا کردم :

public byte[] ImageToByteArray(System.Drawing.Image imageIn)
        {
            using (var ms = new MemoryStream())
            {
                imageIn.Save(ms, imageIn.RawFormat);
                return ms.ToArray();
            }
        }

و به صورت زیر اونو میخوام وارد دیتا بیسم کنم :

p.personelfingerpic = ImageToByteArray(pbImageFrame);

اما خطای زیر داده میشه . cannot convert from system.windows.forms.picturebox to system.drawing.image! کسی میتونه کمکم کنه که بتونم این تصویر رو به آرایه ای از رشته های باینری تبدیل کنم ؟

آخرین ویرایش: 18-05-2018 ساعت 23:23، توسط bivatan

پاسخ ها

1

سلام. میتوم بپرسم باینری رو واسه چی میخوای؟ برای ذخیره کردن؟

0

سلام علیکم . بله برای ذخیره در دیتابیس

0

خدمت شما

public byte[] ImageToByteArray(System.Drawing.Image imageIn)
{
   using (var ms = new MemoryStream())
   {
      imageIn.Save(ms,imageIn.RawFormat);
      return  ms.ToArray();
   }
}

و

public static byte[] converterDemo(Image x)
{
    ImageConverter _imageConverter = new ImageConverter();
    byte[] xByte = (byte[])_imageConverter.ConvertTo(x, typeof(byte[]));
    return xByte;
}
0

دستت درد نکنه . ولی من این دوتا رو نوشتم و گفتم که چون با WindowsFormsHost کار میکنم نمیتونم از این دوتا استفاده کنم و جواب نگرفتم .

این سوال حل نشده است!

این سوال هنوز حل نشده یا به پاسخ بهتری نیاز دارد. برای پاسخ به این سوال کافیست وارد حساب کاربری خود شوید.

لطفا ابتدا لاگین کنید