我想從來自Stream的byte []圖像製作縮略圖。我有兩個選項,DecodePixelWidth或ScaleTransform。DecodePixelWidth Vs.有什麼區別? ScaleTransform?
我的問題:
- 哪一個是更快?
- 哪一種更合適?
- 他們每個人都做什麼?
- 哪一個使用較少的內存/ CPU?
第一:
我喜歡這種方法。它使用更多的內存,但似乎更快。但是,Idk爲什麼?是否使用Matrix並使用GPU來完成這項工作?在這種情況下,我的客戶可能會或可能無法儘快完成。
using (var stream = new MemoryStream(rasterizedPage.ImageData, false))
{
var bitmap = DocHelper.ConvertToBitmapImage(stream);
var transform = new ScaleTransform(0.1, 0.1);
var thumbnail = new WriteableBitmap(new TransformedBitmap(bitmap, transform));
byte[] byteImage = DocHelper.ConvertToBytes(thumbnail);
return byteImage;
}
二:
此方法使用較少的內存,但似乎減慢,影像是模糊的,但他們是如此的縮略圖它的好。不過,ScaleTransform更好嗎?
using (var stream = new MemoryStream(rasterizedPage.ImageData, false))
{
byte[] byteImage;
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.DecodePixelWidth = 120;
bitmap.StreamSource = stream;
bitmap.EndInit();
bitmap.Freeze();
byteImage = DocHelper.ConvertToBytes(bitmap);
return byteImage;
}
謝謝你的幫助。
DecodePixelWidth存在的原因主要是性能。 – usr 2015-01-26 19:27:36
你能詳細說明一下嗎?以什麼方式表現?它速度更快嗎? ScaleTransform? – AzzamAziz 2015-01-26 21:14:53
我不知道,但似乎是唯一合乎邏輯的設計目標。爲什麼修改解碼器,如果用戶界面已經能夠縮放。 Perf是唯一的原因,因爲沒有功能原因。 – usr 2015-01-26 21:16:36