2013-05-28 5 views
0

에 저장 디스크 전체에 WriteableBitmap의 배열을 저장할 수 있습니까? 전체적으로 검색 할 수 있습니까?WriteableBitmap의 배열을 파일

+0

WinRT, WPF, Silverlight? – Denis

+0

@Denis 알고 계시다면 WinRT뿐 아니라 WPF에도 관심이 있습니다. – P5music

답변

2

저장하기 전에 WriteableBitmap의 출력을 PNG 또는 JPG와 같은 인식 된 이미지 형식으로 인코딩해야합니다. 그렇지 않으면 파일의 바이트 일뿐입니다. PNG, JPG, BMP 및 GIF 형식을 지원하는 ImageTools (http://imagetools.codeplex.com/)를 살펴보십시오. http://imagetools.codeplex.com/wikipage?title=Write%20the%20content%20of%20a%20canvas%20to%20a%20file&referringTitle=Home에 이미지를 파일로 저장하는 예가 있습니다.

0

WritableBitmap에서 바이트 배열을 검색 할 수 있습니다. 그리고 그 배열은 저장되고 파일로 읽을 수 있습니다. 이 같은;

WritableBitmap[] bitmaps; 

// Compute total size of bitmaps in bytes + size of metadata headers 
int totalSize = bitmaps.Sum(b => b.BackBufferStride * b.Height) + bitmaps.Length * 4; 

var bitmapData = new byte[totalSize]; 

for (int i = 0, offset = 0; i < bitmaps.Length; i++) 
{ 
    bitmaps[i].Lock(); 

    // Apppend header with bitmap size 
    int size = bitmaps[i].BackBufferStride * bitmaps[i].Height; 
    byte[] sizeBytes = BitConverter.GetBytes(size); 
    Buffer.BlockCopy(sizeBytes, 0, bitmapData, offset, 4); 

    offset += 4; 

    // Append bitmap content 
    Marshal.Copy(bitmaps[i].BackBuffer, bitmapData, offset, size); 

    offset += size; 

    bitmaps[i].Unlock(); 
} 

// Save bitmapDat to file. 

파일에서 읽기와 비슷합니다.

UPD. 비트 맵 크기의 헤더를 추가했습니다. 그것들이 없으면 1 바이트 배열에서 별도의 비트 맵을 읽는 것이 어려울 것입니다.