전체 화면을 덮는 그리드가 있으며이 그리드를 이미지로 만든 다음이 이미지를 서버에 보내려고합니다. 이 목적을 위해 RenderTargetBitmap을 사용하고 FileSave Picker를 사용하여 writeablebitmap을 성공적으로 저장합니다. 이미지 저장은 예상대로 정상 크기로 700kb이지만이 바이트는 너무 커서 서버에 업로드 할 수 없습니다. 700kb 이미지의 예상 바이트는 20 만 개가 될 수 있지만 제 상황에서는 30 만 개가 넘습니다. 확실히 바이트 문제가 있습니다. 다음은 파일 저장 선택기를 사용하여 이미지로 표를 저장하는 데 사용하는 코드입니다.UWP에서 서버에 업로드하기 위해 RednerTargetBitmap 이미지를 byteArray로 변환하는 방법
위의 코드는 정상적인 크기로 주어진 위치에 이미지를 저장합니다. 하지만 위의 픽셀 바이트 배열을 서버에 사용할 때. HTTP 요청 작업을 보내는 동안 예외를 취소하고 세부 사항을 확인했습니다. 엄청난 양의 Bytes 배열 때문입니다. 또한 50x50의 매우 작은 그리드를 보내면 30,000 바이트 만 있기 때문에 업로드가 성공적으로 완료되었지만 서버에 업로드 된 이미지는 비어 있거나 손상되었습니다. 또한 제가이 방법을 사용하여 바이트 배열을 변환 writeablebitmap 위에서 사용한
...using (Stream stream = mywriteablebitmap.PixelBuffer.AsStream())
using (MemoryStream memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
은 또한 반환 바이트 어레이와 같은 에러의 동일한 수의 서버에서 일어났다.
RenderTargetBitmap에서 바이트 배열을 만드는 정확한 방법을 알려주고 서버에 쉽게 업로드 할 수 있습니다.
원시 픽셀 데이터와 인코딩 된 이미지 버퍼를 혼동하고 있습니다. [BitmapEncoder] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.graphics.imaging.bitmapencoder.aspx)를 사용하여 비트 맵을 인코딩 한 다음 인코딩 된 버퍼를 전송하십시오. – Clemens
clemens는 몇 가지 코드 도움말을 제공 할 수 있습니까 ?? 하나의 함수에서 나는 BitmapEncoder를 사용했지만이 줄에는 오류가있다. 'var 인코더 = BitmapEncoder.CreateAsync (BitmapEncoder.PngEncoderId, inMemoryRandomStream) 기다리고 있습니다.' – Shani74