2017-02-26 5 views
0

私はpictureBoxフォームを含むwinformsを持っていますが、LINQを使用してDBからそのコントロールにimgを取得します。CS1061:DBからPictureBoxコントロールへのイメージの取得

CS1061コンパイルするとき、これは誤りである:あなたがusingディレクティブまたはアセンブリが欠落している(のIQueryableイメージの定義が含まれていないと型のIQueryableの最初の引数を受け入れ何の拡張メソッドイメージが見つかりませんでしたが参照)

private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     // Get as single image from the database 
     var q = from image in context.Products 
       where image.Pro_ID == 1 
       select image; 
     // Convert the byte[] to an System.Drawing.Image 
     img.Image = ByteArrayToImage(q.Image.ToArray()); 
    } 

    private byte[] ImageToByteArray(System.Drawing.Image imageIn) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); 
      return ms.ToArray(); 
     } 
    } 

答えて

0

あなたの問題はImageToByteArrayあるがvariebleとして画像を受け入れますが、あなたがこれを使用:?

ByteArrayToImage(q.Image.ToArray()); 

この関数は、配列をvariebleとして使用します。 SQLからのqを取得した後

(qはバイト配列である場合)

var q = (from x in context.Products 
       where x.Pro_ID == 1 
       select x.Image).FirstOrDefault(); 


Image image1 = byteArrayToImage((byte[])q); 

及び方法

public Image byteArrayToImage(byte[] byteArrayIn) 
{ 
    using (var ms = new MemoryStream(byteArrayIn)) 
    { 
     return Image.FromStream(ms); 
    } 
} 

は私が

+0

名前空間System.Drawing.Imageを使用して忘れてはいけません画像を削除しましたが、画像にエラーがあります。 – Emi

+0

削除するとはどういう意味ですか?それを編集する必要があります。エラーは何ですか? ** img **は何ですか? –

+0

私はあなたが配列を削除するべきだと思った。どうすれば編集できますか?パラメータq.Image.ToArray()では、赤い線が画像の下にあります。 – Emi

関連する問題