0

テーブルに新しい製品を挿入しようとしてproductいますが、列の 1 つが画像です。これは私のコードです:

 private void pictureBox1_Click(object sender, EventArgs e)
 {
        OpenFileDialog dlg = new OpenFileDialog();
        dlg.Title = "Open Image";
        dlg.Filter = "bmp files (*.bmp)|*.bmp";

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            pictureBox1.Image = Image.FromFile(dlg.FileName);
            ImageToByte(pictureBox1.Image);
        }

        dlg.Dispose();
    }

    public static byte[] ImageToByte(Image img)
    {
        ImageConverter converter = new ImageConverter();
        return (byte[])converter.ConvertTo(img, typeof(byte[]));
    }

私はこのエラーが発生しています:

パラメータ値を Bitmap から Byte[] に変換できませんでした。

どうすれば解決できますか?

ありがとう

4

2 に答える 2

0

イメージをメモリ ストリームに保存してから、 byte の配列に変換します。

private byte[] ImageToByte(System.Drawing.Image imageToConvert,
                                                   System.Drawing.Imaging.ImageFormat formatOfImage)
            {
                byte[] Ret;
                try
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        imageToConvert.Save(ms, formatOfImage);
                        Ret = ms.ToArray();
                    }
                }
                catch (Exception) { throw; }
                return Ret;
            }

あなたの場合のビットマップの使用例

ImageToByte( [your image here], System.Drawing.Imaging.ImageFormat.Bmp);
于 2013-08-03T20:52:32.950 に答える
0

次の方法でそれを行うことができます。

public static byte[] ToByteArray(this Image image, ImageFormat format)
{
    using(MemoryStream ms = new MemoryStream())
    {
        image.Save(ms, format);
        return ms.ToArray();
    }
}

これを使用します:

var image = yourImageFromPictureBox;
byte[] arr = image.ToByteArray(ImageFormat.Bmp);
于 2013-08-03T20:53:37.720 に答える