1

イメージ ピッカーを使用し、選択したイメージをサーバーにダウンロードする 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 に変換できますか?

4

1 に答える 1

0

このコードでは、画像 (jpeg でエンコードされたもの) を読み取り、base 64 文字列に変換します。画像のサイズを縮小せずに Base 64 のサイズを縮小することはできません。

これを行うには、BitmapEncoder/Decoder を使用して、画像のサイズを小さいサイズに変更できます。

よろしく

于 2013-03-25T13:21:42.997 に答える