gpt4 book ai didi

c# - 如何以最有效的方式将图像转换为字符串?

转载 作者:行者123 更新时间:2023-11-30 18:03:30 24 4
gpt4 key购买 nike

我想将图像文件转换为字符串。以下作品:

MemoryStream ms = new MemoryStream();

Image1.Save(ms, ImageFormat.Jpeg);

byte[] picture = ms.ToArray();
string formmattedPic = Convert.ToBase64String(picture);

但是,将其保存到 XmlWriter 时,需要很长时间才能保存(26k 图像文件需要 20 秒)。有没有办法加快这个 Action ?

谢谢,

拉克斯

最佳答案

您在三点上进行了不必要的大型操作:

  1. 获取流的字节数
  2. 将其转换为 Base64
  3. 将其写入 XmlWriter。

相反。首先调用LengthGetBuffer。这让您可以直接对流的缓冲区进行操作。 (尽管先冲洗它)。

然后,自己实现 base-64。它相对简单,因为您以 3 个字节为一组,进行一些位操作以将索引获取到要转换为的字符,然后输出该字符。在最后你添加一些 = 符号根据最后一个 block 发送的字节数(= 一个剩余字节,==对于两个剩余字节,如果没有部分块则没有)。

将此写入一个字符缓冲区(一个 char[])。最有效的大小是一个实验问题,但我会从 2048 个字符开始。填满缓冲区后,对其调用 XmlWriter.WriteRaw,然后再次从索引 0 开始写回。

这样,您进行的分配就更少了,并且从您将图像加载到内存流中的那一刻起就开始处理输出。通常,这应该会带来更好的吞吐量。

关于c# - 如何以最有效的方式将图像转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118840/

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