2009-12-02 2 views
1

내가 Stackoverflow: How do I load images in the background?WPF를 사용하여 다른 이미지, PNG, GIF 및 JPG를 백그라운드에서로드하는 방법은 무엇입니까?

문제에 대한 답을 사용하여 BackgroundImage를로드하는 WPF를 사용하고는 URL 문자열 PNG, GIF 또는 JPG 될 수 있으며 내가 사용해야 하나 JpegBitmapDecoder, PngBitmapDecoder 또는 GifBitmapDecoder. 올바른 디코더가 사용되지 않으면 FileFormatException이 발생합니다.

문자열에 확장자를 사용할 수는 있지만 확장자가 .png 인 GIF 이미지가있는 경우 오류가 계속 발생할 수 있습니다.

어떻게하면이 문제를 해결할 수 있을까요?

답변

1

파일의 시작 부분을 바이너리로 읽고 다양한 파일 사양과 비교할 수 있습니다.

사양을 읽지 않고 일부 JPG 파일을 검사 한 결과로 얻은 것입니다. 매우 기초적인 일치 패턴이므로 신뢰할 수는 없지만 예제처럼 (전체 응용 프로그램에서 전체 물론 스트림) :

let IsJpg (url:string) = 
    let req = WebRequest.Create(url) 
    let rsp = req.GetResponse() 
    use stream = rsp.GetResponseStream() 
    use reader = new StreamReader(stream)  
    let GetResult = reader.ReadToEnd() 
    GetResult.Contains("JFIF") 

그래서 처음 2 사실 산출, 세 번째 잘못된 것

IsJpg "http://www.flatpackrevolution.com/wp-content/uploads/2007/10/pow.jpg" 
IsJpg "http://bedzine.com/blog/wp-content/uploads/2008/04/4-17-stack-drawers-1-1.jpg" 
IsJpg "http://sstatic.net/so/img/logo.png" 
관련 문제