【问题标题】:Get all pictures and save it to file获取所有图片并将其保存到文件
【发布时间】:2012-10-22 17:03:16
【问题描述】:

我有一个 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();

【问题讨论】:

  • 请将您找到的内容发布为答案,或者至少作为您问题的编辑。这样,其他人就可以从您的发现中受益。

标签: c# wpf image printscreen uniformgrid


【解决方案1】:

当然,只需使用forforeach 遍历您的图像集合,然后使用System.Drawing 命名空间中的Image.GetThumbnailImage 方法来创建缩略图...就这么简单。

例如:

foreach (var img in myImages)
{
  var thumb = image.GetThumbnailImage(thumbnailSize.Width, thumbnailSize.Height, null, IntPtr.Zero);
  //Do something with the thumbnail
  thumb.Save(output)
}

【讨论】:

  • 可能不够清晰,我不想单独保存每张图片,而是一起保存。但我终于想出了让我满意的东西:
猜你喜欢
  • 2017-08-28
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多