イメージ ピッカーを使用し、選択したイメージをサーバーにダウンロードする Windows 8 プログラムがあります。サーバーは、画像を base64string に変換する必要がある API を提供します。また、画像は 7Mb 未満である必要があります。
以下のコードを使用しています。
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
// Application now has read/write access to the picked file
bitmap = new BitmapImage();
byte[] buf;
using (var stream = await file.OpenStreamForReadAsync())
{
buf = ReadToEnd(stream);
}
using (var stream = await file.OpenAsync(FileAccessMode.Read))
{
base64String = Convert.ToBase64String(buf);
bitmap.SetSource(stream);
}
}
そして、ビットマップはサーバーに送られます。しかし、問題があります。たとえば、ビットマップのサイズは jpg のサイズよりもはるかに大きくなります。また、ビットマップ バージョンが 7 Mb を超えるため、小さな jpg はサーバーに送信されません。
画像をビットマップに変換せずに base64string に変換できますか?