2016-01-12 3 views
1

У меня есть следующие строки кода в функции. который считывает изображение с Amazon S3. Размер изображения, который я читаю, составляет 1,37 МБ, где, когда я запускал профайлер, он говорит, что функция чтения в библиотеке изображений магии занимает 5,6 мб, что очень велико. Может ли кто-нибудь объяснить это поведение? Я прилагаю снимок моего профилировщика, а также код.Потребление памяти в Magick.NET

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

Ваш размер изображения на диске не имеет значения для размера изображения в памяти. Объем необходимой памяти зависит от размеров (ширины/высоты) вашего изображения. Когда изображение загружается, необработанные данные преобразуются в пиксельные данные. Для каждого канала Magick.NET будет использовать 8 или 16 бит на пиксель (Q8/Q16). Поэтому, когда у вас есть изображение с 4 каналами (RGBA), и вы используете Q16 версию Magick.NET, вы будете использовать 64 бита на пиксель. Для изображения 1920x1080 вам понадобится 1920*1080*64 = 132710400 bits, и это примерно 16.5 Megabytes. Размер на диске будет меньше в большинстве случаев, потому что большинство форматов изображений сжимают пиксельные данные, когда они сохраняют его на диске.

+0

Благодарим вас за разъяснения. Не могли бы вы также дать мне ссылку на GO lang для того, чтобы сделать то же самое. Более того, производительность будет GO версии Image Magick будет лучше или Magick.Net – Naresh

+0

У меня нет опыта работы с оболочкой GO для ImageMagick, и вам, вероятно, придется самостоятельно выполнить сравнение производительности. – dlemstra

+0

Можете ли вы подробнее объяснить, как это отличается при хранении изображения в памяти по сравнению с диском. Это вообще происходит при загрузке изображения в память, которое оно раздувает. – Naresh

Смежные вопросы