2012-05-19 4 views
4

이미지를 데이터베이스에 저장하고 있습니다. ..하지만 데이터베이스에서 그 이미지를 검색하는 방법 .. 내가 system.drawing 사용하려고하면 .. 오류를 보여줍니다 .. 일부 ppl 내가 wpf에서 system.drwaing 사용할 수 없다는 말 .. 심지어 DLL 파일 .. Loggedwpf - wpf에서 System.Drawing을 사용할 수 있습니까?

내 코드

private void btnShow_Click(object sender, RoutedEventArgs e) 
{ 
     DataTable dt2 = reqBll.SelectImage().Tables[0]; 
     byte[] data = (byte[])dt2.Rows[0][1]; 
     MemoryStream strm = new MemoryStream(); 
     strm.Write(data, 0, data.Length); 
     strm.Position = 0; 
     System.Drawing.Image img = System.Drawing.Image.FromStream(strm); 
     BitmapImage bi = new BitmapImage(); 
     bi.BeginInit(); 
     MemoryStream ms = new MemoryStream(); 
     img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); 
     ms.Seek(0, SeekOrigin.Begin); 
     bi.StreamSource = ms; 
     bi.EndInit(); 
     ImgBox.Source = bi; 
    } 

지금 무엇을해야 하는가?

나는 system.drawing.dll을 사용했습니다. 이제 system.drawing.bitmap ..을 사용할 수 있지만 사용 후 System.Drawing.Image.FromStream (strm)에서 오류가 표시됩니다.

오류 : - 인수 예외가

매개 변수가 유효하지 않은 사용자 코드에 의해 처리되지 않은이었다.

+0

WPF 프로젝트에서 호스팅 할 수 있다고 생각합니다. 괜찮을거야. 그러나 WPF가 대신 할 수있는 것을 활용하지 않는 이유는 무엇입니까? –

+0

나는 system.drawing.dll ..을 사용했습니다. 이제 system.drawing.bitmap을 사용할 수 있습니다. 그러나 사용 후 System.Drawing.Image.FromStream (strm);에서 오류가 표시됩니다. –

+1

오류가 무엇인지 알려주지 않으면 도움을 드릴 수 없습니다. – Foole

답변

6

당신 System.Drawing 네임 스페이스의 클래스를 사용할 수 있지만 프로젝트를 마우스 오른쪽 버튼으로 클릭하여, 관심있는 클래스를 포함하는 어셈블리에 대한 참조를 추가해야합니다,하고 "참조 추가를 선택. .. "옵션

+0

고마워 ..하지만 여전히 System.Drawing.Image.FromStream (strm)에 오류가 표시됩니다. –

0

도면 부분과 관련하여 코드는 문제가 없지만 데이터베이스에서로드하려는 이미지 데이터가 문제 일 수 있습니다 (데이터 형식이 일치하지 않거나 잘못된 열을 선택했을 수 있습니다). 기타.). 이미지없이 데이터베이스를 알 수있는 방법이 없으므로 이미지를 데이터베이스에 저장하는 코드를 공유하고자 할 수 있습니다.

이 코드 샘플은 당신이 원하는 것을 (I 데이터베이스 관련 부분에서 주석 및 파일 로딩으로 교체) : 상기와

private void btnShow_Click(object sender, RoutedEventArgs e) 
{ 
    // DataTable dt2 = reqBll.SelectImage().Tables[0]; 
    // byte[] data = (byte[]) dt2.Rows[0][1]; 
    // MemoryStream strm = new MemoryStream(); 
    // strm.Write(data, 0, data.Length); 

    System.Drawing.Image bmp = System.Drawing.Bitmap.FromFile(@"C:\Temp\test.png"); 
    MemoryStream strm = new MemoryStream(); 
    bmp.Save(strm, System.Drawing.Imaging.ImageFormat.Bmp); 

    strm.Position = 0; 
    System.Drawing.Image img = System.Drawing.Image.FromStream(strm); 
    BitmapImage bi = new BitmapImage(); 
    bi.BeginInit(); 
    MemoryStream ms = new MemoryStream(); 
    img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); 

    ms.Seek(0, SeekOrigin.Begin); 
    bi.StreamSource = ms; 
    bi.EndInit(); 
    imgBox.Source = bi; 
} 

이 과정이 새로운 응용 프로그램을 WPF 전적으로 바람직하다 사용하는 경우 Windows Forms와 WPF 클래스 및 요소를 혼합하는 방법에 대해 설명합니다 (Jeff Mercado가 지적했듯이).

관련 문제