-1

撮影したすべてのビデオ サムネイルを含む UniformGrid があります (それらはすべて System.Windows.Control.Image です)。ここでの私の目標は、ボタンをクリックした後にすべてのサムネイルの jpg を保存することです。UbiformGrid からビットマップ画像などを取得する方法はありますか? C# を WPF で使用しています。

編集:スクリーンショットのように。しかし、ウィンドウの境界線は必要なく、グリッドのコンテンツのみを表示します。

Edit2:私は最終的に解決策を見つけました。助けてくれてありがとう。

RenderTargetBitmap renderTarget = new RenderTargetBitmap((int)ThumbnailPanel.Width, 

(int)ThumbnailPanel.Height, 96, 96, PixelFormats.Pbgra32);
VisualBrush sourceBrush = new VisualBrush(ThumbnailPanel);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
using (drawingContext)
{
    drawingContext.DrawRectangle(sourceBrush, null, new Rect(new Point(0, 0), new Point(ThumbnailPanel.Width, ThumbnailPanel.Height)));
}
renderTarget.Render(drawingVisual);
JpegBitmapEncoder jpgEncoder = new JpegBitmapEncoder();
jpgEncoder.QualityLevel = 80;
jpgEncoder.Frames.Add(BitmapFrame.Create(renderTarget));
Byte[] _imageArray;
using (MemoryStream outputStream = new MemoryStream())
{
    jpgEncoder.Save(outputStream);
    _imageArray = outputStream.ToArray();

}
FileStream fileStream = new FileStream(@"myThumbnails.jpg", FileMode.Create, FileAccess.ReadWrite);
BinaryWriter binaryWriter = new BinaryWriter(fileStream);
binaryWriter.Write(_imageArray);
binaryWriter.Close();
4

1 に答える 1

0

確かに、fororforeachを使用して画像のコレクションを繰り返し処理しImage.GetThumbnailImage、名前空間のメソッドを使用System.Drawingしてサムネイルを作成するだけです...とても簡単です。

例えば:

foreach (var img in myImages)
{
  var thumb = image.GetThumbnailImage(thumbnailSize.Width, thumbnailSize.Height, null, IntPtr.Zero);
  //Do something with the thumbnail
  thumb.Save(output)
}
于 2012-10-22T17:08:38.730 に答える