Magick.NET中的内存消耗

时间:2016-01-12 06:56:11

标签: imagemagick imagemagick.net

我在函数中有以下代码行。从Amazon S3读取图像。我正在阅读的图像大小为1.37 MB,当我运行探查器时,它说图像magick库中的读取功能需要5.6 mb,这是非常高的。谁能解释这种行为?我附上了我的探查器的快照以及代码。

 AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(
                         accessKey,
                         secretKey
                        );

                GetObjectRequest request = new GetObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };

                var response = client.GetObject(request);                
                MagickImage imgStream = new MagickImage(response.ResponseStream);

enter image description here

1 个答案:

答案 0 :(得分:1)

磁盘上的图像大小对于内存中图像的大小并不重要。必要的内存量与图像的尺寸(宽度/高度)有关。加载图像时,原始数据被“转换”为像素数据。对于每个通道,Magick.NET将使用每像素8或16位(Q8 / Q16)。因此,当您拥有4个通道(RGBA)的图像并且使用的是Q16版本的Magick.NET时,您将使用每像素64位。对于1920x1080的图像,您需要1920*1080*64 = 132710400 bits,这大约是16.5 Megabytes。磁盘上的大小在大多数情况下都会变小,因为大多数图像格式在将像素数据保存到磁盘时会对其进行压缩。