2012-02-04
アプリリソースのファイルを分離ストレージにコピーする
アプリケーション内に存在しているビルドアクションを「コンテンツ」にした画像ファイルを、分離ストレージにコピーします。
アプリリソースとして存在しているimage01.gif〜image07.gifのストリームを取得して、分離ストレージのユーザーストアにファイルを作成して、データを書き込みます。
// アプリリソースの画像ファイルを分離ストレージにコピーする void CopyData() { using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { for (int i = 1; i <= 7; i++) { // ファイル名を作成 var fileName = string.Format("image{0:d2}.gif", i); // 同名のファイルが存在している場合、ファイルを削除する if (store.FileExists(fileName)) { store.DeleteFile(fileName); } var uri = new Uri(fileName, UriKind.Relative); using (var strmReader = Application.GetResourceStream(uri).Stream) using (var strmWriter = store.OpenFile(fileName, FileMode.CreateNew)) { // アプリリソースのストリームを読み出す var bytes = new byte[strmReader.Length]; strmReader.Read(bytes, 0, bytes.Length); // 分離ストレージに保存する strmWriter.Write(bytes, 0, bytes.Length); } } } }
Windows Phoneでサポートしているメディアファイル(静止画画像編)
Windows Phoneで対応しているメディア形式*1は以下の通りです。
MAGファイルなどは扱えませんが、インターネット上で使用されている画像フォーマットの大半を占める代表的なフォーマットを扱えることが分かりました。
しかし、これらのメディアファイルを扱えるのは、電子メールアプリの添付画像の閲覧時やInternet Explorer Mobileでの表示のみです。
残念ながら、Silverlightアプリケーションでサポートされている形式はJPEGとPNGの2つ。更にいうとデフォルトでカメラロールへの保存に対応しているのはJPEGのみです。
| フォーマット | 読み込み | 分離ストレージへの保存 | カメラロールへの保存 |
| JPEG | ○ | ○ | ○ |
| PNG | ○ | △ | × |
| BMP | △ | △ | × |
| GIF | △ | △ | × |
以上のことから標準的なWindows Phoneアプリケーションで画像の保存に対応するのであれば、画像フォーマットはJPEG一択となります。
表では△にしましたが、読み込みと分離ストレージでの保存で問題ないのであれば、Codeplexにホスティングされているオープンソースプロジェクトの.NET Image Toolsというプロダクトをお使いください。


CH3COOH / Kenji WadaMicrosoft MVP for Device Application Development(Jul 2010 - Jun 2012)