Windows 8中的Base64String

时间:2012-09-16 11:35:58

标签: windows string bitmap base64 windows-runtime

我有一个使用图像选择器的Windows 8程序,并在服务器上下载所选图像。 服务器提供了一个API,需要在base64string中转换图像。图像必须小于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的大小大得多。并没有小的jpgs进入服务器,因为他们的位图版本大于7 Mb。

我可以将图像转换为base64string而不将其转换为位图吗?

1 个答案:

答案 0 :(得分:0)

在此代码中,您读取图像(以jpeg编码)并将其转换为基本64字符串。 在不缩小图像尺寸的情况下,无法缩小基座64的尺寸。

为此,您可以使用BitmapEncoder / Decoder并将图像调整为较小的尺寸。

此致