我想从来自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