2013-03-19 5 views
3

을 저장하는 방법은 BitmapImage가 있습니다. 이 작업 방법에 대한 예제를 찾을 수 없습니까? 두 번째 질문. 픽셀의 색상을 가져와야합니다 (예 : Color cl=image.GetColorPixel(X,Y)). 어떻게 할 수 있습니까? 감사합니다.BitmapImage WinRT

+1

Pls는 해결책으로 게시물을 표시하거나 마지막으로 무슨 짓을했는지 지적 고려 –

답변

1

BitmapImage을 저장하거나 수정할 수 없습니다. 대신 WriteableBitmap을 사용해야합니다. BitmapImage로 시작할 수는 없다면 - UriSource 속성을 확인하여 동일한 이미지를 다시 다운로드하거나 WriteableBitmap을 시작 부분과 동일한 내용으로로드하십시오 (BitmapImage). 어떤 경우에는 UriSource이 null 일 수 있습니다. BitmapImage에 URI를 부여하여로드 했더라도 수동으로 재설정하거나 setting CacheMode to BitmapCache on an Image that's using the given BitmapImage as its Source으로 재설정 할 수 있습니다.

4

다음은 웹에서 언젠가 전에 찾은 코드입니다. 확실하지는 않지만 SDML 샘플이나 winrt 블로그에서 바로 수정하면

모두가 이미 게시 된 것처럼 WritabelBitmap 이미지로 내려 와서 디코더를 만들어 스트림으로 푸시합니다. .

/// <summary> 
     /// 
     /// </summary> 
     /// <param name="writeableBitmap"></param> 
     /// <param name="outputFile"></param> 
     /// <param name="encoderId"></param> 
     /// <returns></returns> 
     public static async Task SaveToFile(
      this WriteableBitmap writeableBitmap, 
      IStorageFile outputFile, 
      Guid encoderId) 
     { 
      try 
      { 
       Stream stream = writeableBitmap.PixelBuffer.AsStream(); 
       byte[] pixels = new byte[(uint)stream.Length]; 
       await stream.ReadAsync(pixels, 0, pixels.Length); 

       using (var writeStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite)) 
       { 
        var encoder = await BitmapEncoder.CreateAsync(encoderId, writeStream); 
        encoder.SetPixelData(
         BitmapPixelFormat.Bgra8, 
         BitmapAlphaMode.Premultiplied, 
         (uint)writeableBitmap.PixelWidth, 
         (uint)writeableBitmap.PixelHeight, 
         96, 
         96, 
         pixels); 
        await encoder.FlushAsync(); 

        using (var outputStream = writeStream.GetOutputStreamAt(0)) 
        { 
         await outputStream.FlushAsync(); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       string s = ex.ToString(); 
      } 
     } 
0

xaml에서 UI 요소를 가져 와서 운이 좋으면 이미지로 저장하려고합니다. wpf 있음 매개 변수로 UIelement 걸리는 쓰기 가능 비트 맵 메서드가 있지만 그 거기에 Windows 응용 프로그램을 저장하지 않습니다.

DirectX를 사용할 수는 있지만 매우 복잡한 방법입니다. 저장소에있는 대부분의 그리기 응용 프로그램은 JavaScript를 사용하여 저장하는 것이 훨씬 쉽습니다.

3

다음과 같은 방법으로 BitmapImage를 저장할 수 있습니다.

Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 
     StorageFile sampleFile = await localFolder.CreateFileAsync("image.png"); 
     await FileIO.WriteBytesAsync(sampleFile, bytes); 

의 image.png는 응용 프로그램의 로컬 폴더에 저장됩니다.

희망 하시겠습니까?

  • Binaya 라즈 쉬 레스타