일부 시나리오에서, CO (시합)에 필요한 복수의 화상이 합성 효과를 실시 예된다 :
수직 :
가로 :
ImageMergeOrientation 열거
{
수평,
수직
}
개인 무효 CombineImages (에서는 FileInfo []를, 문자열 toPath, ImageMergeOrientation mergeType = ImageMergeOrientation.Vertical)
{
// 최종 이미지를 저장하기위한 위치를 변경.
VAR finalImage = toPath;
VAR의 imgs = files.Select (F => Image.FromFile (f.FullName));
VAR finalWidth = mergeType == ImageMergeOrientation.Horizontal?
imgs.Sum (IMG => img.Width)
imgs.Max (IMG => img.Width);
VAR finalHeight = mergeType == ImageMergeOrientation.Vertical?
imgs.Sum (IMG => img.Height)
imgs.Max (IMG => img.Height);
VAR finalImg 새로운 비트 맵 (finalWidth, finalHeight를) =;
그래픽 g = Graphics.FromImage (finalImg);
g.Clear (SystemColors.AppWorkspace);
VAR 폭 = finalWidth;
VAR 높이를 finalHeight =;
VAR nIndex = 0;
foreach는 (파일에서는 FileInfo 파일)
{
이미지 IMG = Image.FromFile (file.FullName);
경우 (nIndex == 0)
{
g.DrawImage (IMG, 새로운 포인트 (0, 0));
nIndex ++;
폭 = img.Width;
높이 = img.Height;
}
다른
{
스위치 (mergeType)
{
케이스 ImageMergeOrientation.Horizontal :
g.DrawImage (IMG, 새로운 포인트 (폭, 0));
폭 + = img.Width;
단절;
경우 ImageMergeOrientation.Vertical :
g.DrawImage (IMG, 새로운 포인트 (0, 높이));
높이 + = img.Height;
단절;
기본 :
새로운 ArgumentOutOfRangeException ( "mergeType")를 던져;
}
}
img.Dispose ();
}
g.Dispose ();
finalImg.Save (finalImage, System.Drawing.Imaging.ImageFormat.Tiff);
finalImg.Dispose ();
}
코드 설명 :
수평 또는 수직의 이미지 파라미터에 따라 합성
이 수평 인 경우, 최대 상고 간다 상기 최광의 세로 폭 가면
UT 코드 :
[TestMethod]
공공 무효 Combine_Multiple_SampleImages_IntoOne ()
{
const를 문자열 folderPath = "C : \\ 사용자 \\ 공공 \\ 사진 \\ 샘플 사진";
VAR 이미지 = 새의 DirectoryInfo (folderPath) .GetFiles ( "* JPG."SearchOption.TopDirectoryOnly);
CombineImages (이미지, "C : /FinalImage_H.tiff");
CombineImages (이미지, "C : /FinalImage_V.tiff", ImageMergeOrientation.Vertical);
}