1

我有一个 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 的大小要大得多。而且小 jpg 文件都不会发送到服务器,因为它们的位图版本大于 7 Mb。

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

4

1 回答 1

0

在此代码中,您读取图像(以 jpeg 编码)并将其转换为 base 64 字符串。在不减小图像大小的情况下,您无法减小 base 64 的大小。

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

问候

于 2013-03-25T13:21:42.997 回答