我有一个 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 而不将其转换为位图吗?