2012-02-24 3 views
2

私はBitmapImageを取り、分離ストレージ内のローカルのWindows Phone 7デバイス上のJPEGとして保存する機能を作成するために探しています:Windows Phone 7デバイスでビットマップイメージを取得し、JPEGイメージファイルとして保存するにはどうすればよいですか?

static public void saveImageLocally(string barcode, BitmapImage anImage) 
{ 
// save anImage as a JPEG on the device here 
} 

私はこれを実現するにはどうすればよいですか?どういうわけか私はIsolatedStorageFileを使ったと仮定していますか?

ありがとうございました。

編集:私はこれまでに発見したものをここ

は...誰もが、これはこれを行うには正しい方法であるかどうかを確認することができますか?それを保存するには

static public void saveImageLocally(string barcode, BitmapImage anImage) 
    { 
     WriteableBitmap wb = new WriteableBitmap(anImage); 

     using (var isf = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (var fs = isf.CreateFile(barcode + ".jpg")) 
      { 
       wb.SaveJpeg(fs, wb.PixelWidth, wb.PixelHeight, 0, 100); 
      } 
     } 
    } 

    static public void deleteImageLocally(string barcode) 
    { 
     using (IsolatedStorageFile MyStore = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      MyStore.DeleteFile(barcode + ".jpg"); 
     } 
    } 

    static public BitmapImage getImageWithBarcode(string barcode) 
    { 
     BitmapImage bi = new BitmapImage(); 

     using (var isf = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (var fs = isf.OpenFile(barcode + ".jpg", FileMode.Open)) 
      { 
       bi.SetSource(fs); 
      } 
     } 

     return bi; 
    } 

答えて

5

var bmp = new WriteableBitmap(bitmapImage); 
using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication()) 
    { 
     using (IsolatedStorageFileStream stream = storage.CreateFile(@"MyFolder\file.jpg")) 
     { 
      bmp.SaveJpeg(stream, 200, 100, 0, 95); 
      stream.Close(); 
     } 
    } 

はい、あなたはあなたの編集で追加のものは、それが動作:)前に私が行っているまさにです。

1

は、これは私のコードですが、そこからneccesaryポイントを取ることができます:

 var fileName = String.Format("{0:}.jpg", DateTime.Now.Ticks); 
     WriteableBitmap bmpCurrentScreenImage = new WriteableBitmap(480, 552); 
     bmpCurrentScreenImage.Render(yourCanvas, new MatrixTransform()); 
     bmpCurrentScreenImage.Invalidate(); 
     SaveToMediaLibrary(bmpCurrentScreenImage, fileName, 100); 


    public void SaveToMediaLibrary(WriteableBitmap bitmap, string name, int quality) 
    { 
     using (var stream = new MemoryStream()) 
     { 
      // Save the picture to the Windows Phone media library. 
      bitmap.SaveJpeg(stream, bitmap.PixelWidth, bitmap.PixelHeight, 0, quality); 
      stream.Seek(0, SeekOrigin.Begin); 
      new MediaLibrary().SavePicture(name, stream); 
     } 
    } 
関連する問題