图像到字节数组 - ExternalException

Posted

技术标签:

【中文标题】图像到字节数组 - ExternalException【英文标题】:Image to byte array - ExternalException 【发布时间】:2015-04-03 06:49:57 【问题描述】:

我正在尝试使用读卡器从 EID 读取图像并将其转换为字节数组以用于数据库存储。

阅读图像效果很好。我能够检索具有这些属性的有效图像:

但是,我无法将其转换为字节数组。我正在使用这段代码,虽然我已经尝试过其他方法来转换它:

public static byte[] ImageToBytes(Image image)

    MemoryStream stream = new MemoryStream();
    image.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
    return stream.ToArray();


调用 Save 方法会出现以下异常:

An exception of type 'System.Runtime.InteropServices.ExternalException' occurred in System.Drawing.dll but was not handled in user code

异常的细节并没有清除任何东西。这是一个普遍的例外,没有关于出了什么问题的信息。

任何想法我做错了什么?

【问题讨论】:

即使在处理图像和流时,我仍然遇到这个问题。该列表中的所有内容都已检查。 这可能会有所帮助:***.com/a/16576471/253938 这可能对你有帮助:***.com/questions/5813633/… 顺便问一下,什么是“EID”? 电子身份证:) 【参考方案1】:

您可能使用了错误的ImageFormat

this 文档中,提到如果使用错误的 ImageFormat 调用 .Save(),将抛出 ExternalException

如果您将System.Drawing.Imaging.ImageFormat.Bmp 更改为image.RawFormat,您可以更通用并涵盖更多图像类型

示例:

public static byte[] ImageToBytes(Image image)

    MemoryStream stream = new MemoryStream();
    image.Save(stream, image.RawFormat);
    return stream.ToArray();



【讨论】:

以上是关于图像到字节数组 - ExternalException的主要内容,如果未能解决你的问题,请参考以下文章

图像到字节数组 - ExternalException

图像到字节数组到字符串(反之亦然)

BMP字节数组到BMP图像php

在 Qml 中从字节数组加载到图像

将图像读取到字节数组并更改它

以字节数组上传到服务器的映像损坏(无法打开图像)