2013-06-23 2 views
1

원본이 실제 이미지를 가리키는 경우 아래의 XAML이 작동합니다.리디렉션이있는 WPF 이미지 컨트롤 소스

<Image Source="http://somewhere.com/somewhere.png" /> 

그러나 소스가 URL 단축키 서비스에서 리디렉션되는 경우 이미지로드에 실패합니다.

이 문제를 해결할 수있는 간단한 방법이 있습니까? 아니면 내가 토끼 ​​구멍을 내려 가서 직접 리디렉션을 처리해야합니까? AllowAutoRedirect 플래그 (비고 here 참조) 웹 클라이언트 인스턴스 true로 설정되어

+0

왜 URL을 단축해야합니까? 이미지 소스에 실제 완전한 URL을 제공하겠습니까? –

+0

url은 외부 소스에서 온 것입니다. –

답변

2

으로, 다음 작업을 할 수 있으며, 아마도 리디렉션을 처리 할 수있는 가장 쉬운 방법이 될 수 있습니다. 그러나 리디렉션 된 이미지 URL이 없어 테스트하지 않았습니다.

var url = ... 
var buffer = (new WebClient()).DownloadData(url); 
var bitmap = new BitmapImage(); 

using (var stream = new MemoryStream(buffer)) 
{ 
    bitmap.BeginInit(); 
    bitmap.CacheOption = BitmapCacheOption.OnLoad; 
    bitmap.StreamSource = stream; 
    bitmap.EndInit(); 
} 

image.Source = bitmap; 

작동하는 경우이 코드를 바인딩 변환기에 넣을 수 있습니다.


이 모든, 나는 WPF의 (ImageSource에 URL 문자열에서) 형식 변환기를 내장도 사용할 수있는 하나의 HttpWebRequest 또는 웹 클라이언트를 기대했다 가졌어요. 두 가지 기본 동작 모두 리디렉션을 허용하는 것입니다. 어쩌면 다른 이유로 리디렉션이 실패 할 수도 있습니다.

+0

다른 이유로 인해 리디렉션이 실패 할 수 있습니다. 그러나 수신 된 URL을 이미지 소스로 전달하여 브라우저에 붙여 넣으면 이미지를 찾습니다. 나는 더 조사 할 것이다. 감사. –

+0

WebCLient Celmens를 알지 못했습니다. 꽤 깔끔한. –