创建图像而不会丢失数据

问题描述

我将JPEG存储为字节数组,我想将其转换为System.Drawing.Image,如下所示:

using(var ms = new MemoryStream(myArray))
{
    img = System.Drawing.Image.FromStream(ms);
    Console.WriteLine(ImageToByteArray(img).Length);
}

但是,我遇到的问题是我正在迷失并且我的形象下降。我的初始数组长为2673030字节,MemoryStream也是如此,但是当我查看img的长度时,它的长度仅为2672013字节。甚至更奇怪的是,当我在docker容器上运行此代码段时,图像会一直缩小到1700324字节。这些大小来自所示的打印语句,因此与文件格式无关。

我尝试将流作为BitMap读取,并且还尝试将字节数组写入文件并直接从文件中创建图像/位图,所有操作都具有完全相同的调整大小结果。

问题的核心是将图像保存到服务器时图像质量下降。据我所知,唯一的区别是FromStream()返回大小不同的图像,因此有人知道a)一种创建我的图像而不丢失数据的方法,以及b)为什么在不同的机器上以不同的方式调整它的大小吗? A)是优先级更高的答案。

private byte[] ImageToByteArray(System.Drawing.Image imageIn)
    {
        using (var ms = new MemoryStream())
        {
            imageIn.Save(ms,imageIn.RawFormat);
            return ms.ToArray();
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...