我正在尝试将StreamImageSource转换为字节。 当我在日志中运行时,名为“imgPicked”的图像是StreamImageSource。我想把它转换成Byte [],但我不确定你是怎么做的。
这是我的代码:
private async void btnPickPicture_Clicked (object sender, EventArgs e)
{
await cameraOps.SelectPicture ();
var file = await cameraOps.SelectPicture();
imgPicked.Source = ImageSource.FromStream(() => file.Source);
System.Diagnostics.Debug.WriteLine (imgPicked.Source);
//imgPicked is an StreamImageSource
}
如何将StreamImageSource(imgPicked)转换为byte []?
这是我在google搜索后到目前为止所拥有的内容:
byte[] data = File.ReadAll(imgPicked.Source);
但我找不到“档案”。我是否错过了一个集会,或者作者没有提到“文件”继承的内容(参见链接):Is there a cross-platform solution to ImageSource to byte[]?
答案 0 :(得分:0)
你没有。您无法将StreamImageSource转换为byte []。您可以使用源代码创建一个byte [],使用之前给出的代码。
await cameraOps.SelectPicture ();
var file = await cameraOps.SelectPicture();
// use the file.Source stream to create a StreamImageSource
imgPicked.Source = ImageSource.FromStream(() => file.Source);
// use the file.Source stream to create a byte[]
byte[] imgData = ReadStream(file.Source);
public byte[] ReadStream(Stream input)
{
byte[] buffer = new byte[16*1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}