gpt4 book ai didi

c# - Windows Phone - 字节数组到 BitmapImage 转换器抛出异常

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:28 24 4
gpt4 key购买 nike

我有一个字节数组到 BitmapImage 转换器,它工作正常。为了在我的应用程序中支持磁贴,我从图像创建一个磁贴(调整大小并裁剪它)并将其作为字节数组保存到我的数据库中。现在,如果我想用我的转换器显示这个磁贴,它会抛出一个异常:

找不到组件。 (HRESULT 异常:0x88982F50)

我创建磁贴的方法:

            WriteableBitmap bmp = new WriteableBitmap(img);

int height = bmp.PixelHeight;
int newHeight = 0;

int width = bmp.PixelWidth;
int newWidth = 0;

// calculate new height and new width...

bmp = bmp.Resize(newWidth, newHeight, WriteableBitmapExtensions.Interpolation.Bilinear);
bmp = bmp.Crop(0, 0, 336, 336);
byte[] byteArray = bmp.ToByteArray();

item.Tile = byteArray;

我的实体内磁贴的属性:

    private byte[] _tile;

[Column(DbType = "IMAGE")]
public byte[] Tile
{
get { return _tile; }
set { SetProperty(ref _tile, value); }
}

我的字节数组到 BitmapImage 的转换方法:

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null && value is byte[])
{
using (var stream = new MemoryStream((byte[])value))
{
stream.Seek(0, SeekOrigin.Begin);

BitmapImage image = new BitmapImage();
image.SetSource(stream);

return image;
}
}

return null;
}

我认为问题是字节数​​组在数据库中保存为Base64编码的字符串,解码回字节数组时出错,但我不知道如何解决。

最佳答案

我担心您创建字节数组的方法。你有没有使用 SaveJpeg 的原因?扩大?我无法识别您正在进行的 WritableBitmap.ToByteArray 调用。请尝试使用以下代码:

int quality = 90;

using (var ms = new System.IO.MemoryStream()) {
bmp.SaveJpeg(ms, bmp.PixelWidth, bmp.PixelHeight, 0, quality);
item.Tile = ms.ToArray();
}

关于c# - Windows Phone - 字节数组到 BitmapImage 转换器抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com