2012-10-22 2 views
-1

찍은 모든 비디오 축소판을 포함하는 UniformGrid가 있습니다 (모두 System.Windows.Control.Image입니다). 여기 내 목표는 버튼을 클릭 한 후 모든 미리보기 이미지의 jpg를 저장하는 것입니다. 거기에 UbiformGrid에서 비트 맵 이미지 또는 무언가를 잡을 수있는 방법이 있나요? WPF와 함께 C#을 사용하고 있습니다.모든 사진 가져 오기 및 파일로 저장

편집 : 스크린 샷 : 그러나 경계선 테두리는 원하지 않습니다. 그리드 내용 만 있습니다.

편집 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

물론, 그냥 간단한 것을의 ... for 또는 foreach와 이미지의 컬렉션을 반복하고 작은 이미지를 만들 수 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) 
} 
+0

어쩌면 그것은 충분히 명확하지 않았다, 나는 각 심상을 seperatly 그러나 모두 함께 저장하고 싶지 않았다. 그러나 나는 마침내 나를 만족시키는 무엇인가를 생각해 냈다. – Sophie

관련 문제