2010-05-21 4 views
1

У меня есть MemoryStream из 10K, который был создан из растрового изображения 2 МБ и сжат с использованием JPEG. Поскольку MemoryStream не могут быть непосредственно размещены в System.Windows.Controls.Image для графического интерфейса пользователя, для этого я использую следующий промежуточный код, чтобы преобразовать его обратно в BitmapImage и в конечном итоге System.Windows.Controls.Image.MemoryStream из BitmapSource, необходимо уменьшить потребление памяти

Мой вопрос, когда я храню это в BitmapImage, распределение памяти занимает около 2 МБ. Ожидается ли это? Есть ли способ уменьшить память?

У меня около 300 эскизов, и этот конверсион занимает около 600 МБ, что очень высоко.

Цените свою помощь!

ответ

2

Есть ли способ уменьшить память?

Да, это их: не создавайте свой памятный образ из самого изображения, вместо этого используйте его миниатюру.

Вот пример кода, как это сделать:

 private void button1_Click(object sender, EventArgs e) 
      { 
       Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback); 
       Bitmap myBitmap = new Bitmap(@"C:\Documents and Settings\Sameh\My Documents\My Pictures\Picture\Picture 004.jpg"); //3664 x 2748 = 3.32 MB 
       Image myThumbnail = myBitmap.GetThumbnailImage(myBitmap.Width/100, myBitmap.Height/100 , myCallback, IntPtr.Zero); 
    //now use your thumbnail as you like 
       myThumbnail.Save(@"C:\Documents and Settings\Sameh\My Documents\My Pictures\Picture\Thumbnail 004.jpg"); 
       //the size of the saved image: 36 x 27 = 2.89 KB 
//you can create your memory stream from this thumbnail now 
      } 

      public bool ThumbnailCallback() 
      { 
       return false; 
      } 

И here is more details о решении.

+0

Samesh, Спасибо за ваш ответ .. Я не знаком с GetThumbnailImage(). Есть ли недостаток в его использовании? Я могу увидеть весь образ? – codematrix

+0

Единственным недостатком, который я вижу, является использование метода обратного вызова, который всегда возвращает false! но это то, как работает образец, предоставленный Microsoft! пожалуйста, обратитесь к предоставленной ссылке для получения более подробной информации. Что касается всего изображения: вы увидите ** Миниатюру ** изображения; то есть уменьшенную версию ** всего ** изображения. Пожалуйста, прочитайте раздел замечаний в предоставленной ссылке, это важно. –

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