이미지 합성의 복수 같은 C #을 선택 형식

일부 시나리오에서, 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);
        }
 

출시 여섯 개 원래 기사 · 원 찬양 189 · 전망 280 000 +

추천

출처blog.csdn.net/newbie_xymt/article/details/103298570