-1

我正在使用此函数将 base64 转换为图像。

public Image Base64ToImage(string base64String)
{
    // Convert Base64 String to byte[]
    byte[] imageBytes = Convert.FromBase64String(base64String);
    using (var ms = new MemoryStream(imageBytes, 0,imageBytes.Length))
    {
        // Convert byte[] to Image
        ms.Write(imageBytes, 0, imageBytes.Length);
        //Image image = Image.FromStream(ms, true);
        Image image = Image.FromStream(ms,true,true);
        return image;
    }
}

但它不工作。请帮我。

4

1 回答 1

0

我不认为这里需要 ms write 调用。

 using (var ms = new MemoryStream(imageBytes, 0,imageBytes.Length))
        {
            // Convert byte[] to Image
            ms.Write(imageBytes, 0, imageBytes.Length);

您正在有效地从 byteArray 构造流,因此 ms.Write 调用将在流中附加两次数据。这可能会导致您的 Image 对象出现问题。要么使用流的默认构造函数,要么删除 Write 并再次测试。

编辑:Zey 删除了他的答案,但我认为他有一个很好的观点。您也可以考虑删除 using 块。我的记忆可能会让我失望,但我认为 Image 对象需要源流保持打开状态。不再需要时处置 Image 对象。

于 2013-11-12T11:16:38.047 回答