2012-10-22 100 views
-1

我有一个UniformGrid,其中包含我拍摄的所有视频缩略图(它们都是System.Windows.Control.Image)。我的目标是在点击按钮后保存所有缩略图的jpg。有没有办法从UbiformGrid抓取位图图片或其他东西? 我正在使用C#与WPF。获取所有图片并将其保存到文件

编辑:像一个截图。但我不想窗边框,只有网格内容。

编辑2:我终于找到了解决方案。谢谢您的帮助。

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(); 
+0

请张贴你发现了什么作为一个答案,或者至少是你的问题的编辑。这样,其他人可以从你发现的东西中受益。 –

回答

0

当然,通过你们的图像采集与迭代或forforeach使用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) 
} 
+0

也许它不够清楚,我不想保存每个图像分开,但一起。但我最终想出了一些令我满意的东西: – Sophie

相关问题