ストリームから取得した byte[] 画像からサムネイルを作成したいと思います。DecodePixelWidth または ScaleTransform の 2 つのオプションがあります。
私の質問:
- どちらが速いですか?
- より適切な方法はどれですか?
- 彼らはそれぞれ何をしますか?
- メモリ/CPUの使用量が少ないのはどれですか?
初め:
私はこの方法を好みます。わずかに多くのメモリを使用しますが、より高速なようです。しかし、なぜですか?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;
}
2番:
この方法はメモリ使用量は少ないですが、遅く見えますし、画像はぼやけていますが、サムネイルなので問題ありません。それでも、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;
}
ご協力ありがとうございました。