2013-01-24 1 views
0

.jpg 또는 .png 파일을 쓰기 가능 비트 맵으로 변환하려고합니다. 다른 소스에서 이미지를 가져 와서 base64 인코딩으로 변환합니다. 패키징을 제거한 후 너비, 높이 및 base64 데이터를가집니다. 다음 사용 :image.jpg 바이트 배열에서 base64를 통해 쓰기 가능 비트 맵으로 WP8

var base64 = dataurl.Substring(dataurl.IndexOf("base64,") + 7); 
binData = Convert.FromBase64String(base64); 

내 이미지의 이진 데이터를 제공합니다. 문제는 실제로 윈도우 폰 8 용으로 쓰고 있습니다. 따라서 사용할 수있는 라이브러리와 메소드가 제한되어 있습니다. 확실한 선택은 다음과 같습니다.

using (var stream = new MemoryStream(binData, 0, binDta.Length, true, true)) 
{ 
    var wbp = new WriteableBitmap(1,1).LoadJpeg(stream); 
} 

그러나 WriteableBitmap 라이브러리에서 System.ArgumentException이 발생합니다. Windows Phone 8에서 작동하는 아이디어는 무엇입니까?

답변

1

base64 디코딩 된 데이터가 실제로 JPG 및 PNG와 같은 유효한 형식인지 확인해야합니다. `내가 JPEG에서 캔버스 데이터를 전송하려고했습니다; canvas.toDataURL은() =

기본 64 인코딩은 자바 스크립트 라인에서 오는
var wbp = new WriteableBitmap(1, 1).FromStream(stream); 
+0

'VAR 데이터 : 그럼 난 당신이 WriteableBitmapEx FromStream의 방법을 시도 권하고 싶습니다 png 및 bmp 이미지가 있지만 이미지/jpg가있는 다른면이 항상 튀어 나와 있습니다. 이 유효한 형식으로 생각할 것이라고 .FromStream (스트림) 시도했다. 나는 여전히 당신의 충고를 고려하고 .FromByteArray와 .FromJpeg를 사용하려하지 않을 것이다. 더 이상의 팁? 도움이된다면 .png 또는 .jpg 파일 중 binData 또는 base64 데이터를 제공 할 수 있습니다. – rickstockham

+0

bin 데이터를 사용하여 jpeg/png 파일로 저장하고 Windows에서 열 수 있는지 확인해야합니다. 파일 형식이 올바른지 확인하십시오. –

+1

그것을 알아 냈고 당신의 대답은 모두 가깝습니다. 윈도우 폰 8의 '특별한'성질과 바이트 데이터의 압축 된 특성 때문에'WritableBitmap.LoadJpeg (stream);이 올바른 선택이었습니다, Deployment.Curretn.Dispatcher.BeginInvoke(); 오, 스레드 종속성의 즐거움. 나는 이것이 내가 png에 대해 알고있는 어떤 라이브러리에서도 불가능하다고 확신한다. 행운의 모든 이미지를 jpg로 만들 수 있습니다. – rickstockham