我在Stackoverflow或互联网上找到了很多答案,但没有人解决我的问题。 我找到的最接近的解决方案是混合了一些并导致了这个:
InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
{
writer.WriteBytes(foto.FOTO_BYTE);
writer.StoreAsync().GetResults();
}
BitmapImage image = new BitmapImage();
image.SetSource(stream);
ImageBrush brush = new ImageBrush();
brush.ImageSource = image;
preview.Background = brush;
第二部分有效,因为我已经在另一个应用程序中使用过它,但是在Windows 8.1中我将byte[]
转换为InMemoryRandomAccessStream
时出现问题。
无论如何,我们将不胜感激。
PS:new WriteableBitmapImage(bitmap);
在WP 8.1中不起作用:(
谢谢大家。
编辑:preview
是画布,可能是错误的填充方式吗?
这是我初始化它的方式
<Grid x:Name="rootView">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Canvas x:Name="preview" Background="White" Grid.Row="0"></Canvas>
<Button x:Name="btnElimina" HorizontalAlignment="Center" Grid.Row="1" Content="ELIMINA"></Button>
</Grid>
答案 0 :(得分:0)
我正在使用这个
public static class ByteArrayExtensions
{
public static async Task<BitmapImage> AsBitmapImageAsync(this byte[] byteArray)
{
if (byteArray == null) return null;
using (var stream = new InMemoryRandomAccessStream())
{
await stream.WriteAsync(byteArray.AsBuffer());
var image = new BitmapImage();
stream.Seek(0);
image.SetSource(stream);
return image;
}
}
}
答案 1 :(得分:0)
使用此功能进行所需的转换:
using System.Runtime.InteropServices.WindowsRuntime;
internal static async Task<InMemoryRandomAccessStream> ConvertTo(byte[] arr)
{
InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
await randomAccessStream.WriteAsync(arr.AsBuffer());
randomAccessStream.Seek(0);
return randomAccessStream;
}