我想从一个来自Stream的byte[]图像中制作缩略图。我有两个选择:DecodePixelWidth或ScaleTransform。
我的问题:
1.哪一个更快? 2.哪一个是更合适的方法? 3.它们各自是做什么的? 4.哪一个使用更少的内存/CPU?
首先:
我更喜欢这种方法。它使用的内存略多,但似乎更快。然而,我不知道为什么?它是否使用了矩阵并利用GPU进行工作?在这种情况下,我的客户可能无法像我一样快速完成这项工作。
感谢您的帮助。
我的问题:
1.哪一个更快? 2.哪一个是更合适的方法? 3.它们各自是做什么的? 4.哪一个使用更少的内存/CPU?
首先:
我更喜欢这种方法。它使用的内存略多,但似乎更快。然而,我不知道为什么?它是否使用了矩阵并利用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;
}
感谢您的帮助。