我有一个使用图像选择器的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而不将其转换为位图吗?
答案 0 :(得分:0)
在此代码中,您读取图像(以jpeg编码)并将其转换为基本64字符串。 在不缩小图像尺寸的情况下,无法缩小基座64的尺寸。
为此,您可以使用BitmapEncoder / Decoder并将图像调整为较小的尺寸。
此致