当尝试将存储在SQLite数据库中的一些图像转换为blob到位图时,我得到以下错误。
[skia] --- decoder->decode returned false
我正在尝试以下代码:
// Loads a Bitmap from a byte array
public static Bitmap bytesToBitmap (byte[] imageBytes)
{
Bitmap bitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
return bitmap;
}
Result:一些图像转换成功,但其他图像得到skia decode返回false。总是显示相同的图像,而相同的其他图像得到错误。
在iOS应用程序上使用相同的数据库,并且所有图像都正确显示。图片格式为jpeg。
我发现这里解决了类似的问题,但我无法将其转换为c#。
有没有人知道一个解决办法,从字节数组加载位图没有这些问题?
终于修好了!!
我必须做一个这样的解决方案:
/// Loads a Bitmap from a byte array
public static Bitmap bytesToUIImage (byte[] bytes)
{
if (bytes == null)
return null;
Bitmap bitmap;
var documentsFolder = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
//Create a folder for the images if not exists
System.IO.Directory.CreateDirectory(System.IO.Path.Combine (documentsFolder, "images"));
string imatge = System.IO.Path.Combine (documents, "images", "image.jpg");
System.IO.File.WriteAllBytes(imatge, bytes.Concat(new Byte[]{(byte)0xD9}).ToArray());
bitmap = BitmapFactory.DecodeFile(imatge);
return bitmap;
}
请注意,创建的文件缺少.jpeg文件"D9"的结尾字节,因此我必须手动添加它。我知道我的图像包含了这个字节,我还尝试通过使用BitmapFactory向byteArray添加"D9"来生成位图。DecodeByteArray .
所以,唯一适合我的解决方案是从byteArray创建一个文件并解码该文件。