【问题标题】:System.ArgumentException: "Parameter is not Valid" Memorystream to ImageSystem.ArgumentException:“参数无效”内存流到图像
【发布时间】:2020-03-18 10:39:11
【问题描述】:

我检查了其他 StackOverflow 问题,但似乎没有任何帮助,因为它们中的大多数都使用“base64string”,这对我没有帮助,因为我的 byte[] 是用 Windows-1252 编码的。

我的问题:

我正在使用条形码扫描仪制作图片,我使用Encoding.GetEncoding("Windows-1252").GetString(e.Buffer))。 e 是DataaReceivedEventArgs,它给了我一个字节数组。

我必须将其转换为字符串,因为我必须从响应中删除一些部分,这一步必须保留。

然后我使用Encoding.GetEncoding("Windows-1252").GetBytes(response) 将其转换为 ByteArray。

然后我只创建一个MemoryStream 并在Image.FromStream(ms) 中使用它。问题是它 WORKS 第一次没有任何问题。但是在第二次之后它给了我无效的参数异常。

  byte[] bBytes = await responseZuBytesArray();

            using (MemoryStream ms = new MemoryStream(bBytes))
            {
                pcbBildAnzeige.SizeMode = PictureBoxSizeMode.StretchImage;
                pcbBildAnzeige.Image = Image.FromStream(ms);
            }

            tIsStarted = false;

我尝试设置 MemoryStream 的位置,尝试先将其转换为位图。我已经尝试了很多,但我认为有一些简单的事情我只是没有看到这就是我在这里问的原因

【问题讨论】:

  • 注意gray blocks。这意味着您不能将图像存储在字符串中。你真的必须使用 base64。

标签: c# image memorystream


【解决方案1】:

尝试使用System.Drawing.ImageConverter类转换字节数组;

Bitmap bitmap = (Bitmap)new System.Drawing.ImageConverter().ConvertFrom(bBytes);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多