NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 6
  • 매뉴얼

    NGM 6

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    커스텀 이미지 자르는 커스텀 모듈 액션 만들기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 오늘은 간단하게 이미지를 자르는 액션을 만들어 볼께요. 이전에 만든 프로젝트를 열고, 새로운 클래스를 하나 추가하세요. 클래스 이름은 CustomImageCropModel.cs입니다. 꼭 이와 동일한 이름으로 만들 필요는 없습니다. 앞에 Custom을 붙이고, 뒤에 Model을 붙이면 됩니다. 중간에 자신이 알아볼 수 있는 이름을 입력하면 됩니다.

    lMS2Ol3.jpg

     

     

    프로젝트에 클래스가 추가 되었습니다. 벌써 3개가 만들어졌네요.

    ANgoXhc.jpg

     

     

    코드는 아래와 같이 수정하세요.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CustomImageSearch
    {
        [Serializable]
        public class CustomImageCropModel : NGM.Models.Interface.BaseCustomToolModel
        {
            public override string DisplayCategory => throw new NotImplementedException();
    
            public override string DisplayName => throw new NotImplementedException();
    
            public override void Execute()
            {
                throw new NotImplementedException();
            }
        }
    }

     

     

    이 예제를 학습하기 위해서는 아래 글들을 참고해서 개발 환경을 먼저 만들어야 합니다.

    커스텀 모듈 개발 환경 만들기 ]

    1부 - 커스텀 모듈로 이미지 서치 액션 만들기 ]

    2부 - 커스텀 모듈로 이미지 서치 액션 만들기 ]

    3부 - 커스텀 모듈로 이미지 서치 액션 만들기 ]

     

    아래와 같이 자를 이미지 영역을 설정할 수 있도록 속성을 만들어주세요.

            [Category("Action")]
            [DisplayName("왼쪽")]
            [Description("이미지에서 왼쪽 부분을 설정한 값만큼 잘라줍니다.")]
            [Browsable(true)]
            [DefaultValue(0)]
            public int Left { get; set; }
    
            [Category("Action")]
            [DisplayName("오른쪽")]
            [Description("이미지에서 오른쪽 부분을 설정한 값만큼 잘라줍니다.")]
            [Browsable(true)]
            [DefaultValue(0)]
            public int Right { get; set; }
    
            [Category("Action")]
            [DisplayName("위쪽")]
            [Description("이미지에서 위쪽 부분을 설정한 값만큼 잘라줍니다.")]
            [Browsable(true)]
            [DefaultValue(0)]
            public int Top { get; set; }
    
            [Category("Action")]
            [DisplayName("아래쪽")]
            [Description("이미지에서 아래쪽 부분을 설정한 값만큼 잘라줍니다.")]
            [Browsable(true)]
            [DefaultValue(0)]
            public int Bottom { get; set; }

     

    이번에는 이미지도 사용자가 선택할 수 있도록 해볼께요. 아래 속성을 추가하면 됩니다. 속성의 어노테이션에 아래 내용을 추가하면 파일 선택기를 사용할 수 있습니다. 아무래도 직접 파일 경로를 입력하는 것보다는 사용자 편의를 위해 탐색기를 표시해주는게 좋겠죠?

    • [Editor(typeof(NGM.Models.TypeEditor.OpenFileSelectorEditor), typeof(UITypeEditor))]
            [Category("Action")]
            [DisplayName("이미지 선택")]
            [Description("이미지 파일을 선택하세요.")]
            [Browsable(true)]
            [DefaultValue(null)]
            [Editor(typeof(NGM.Models.TypeEditor.OpenFileSelectorEditor), typeof(UITypeEditor))]
            public string ImageFile { get; set; }

     

    이제 Execute 메소드에서 이미지를 가져와서 설정한 크기만큼 자른 후 윈도우 바탕화면에 result.png 파일로 저장하도록 코딩하세요.

            public override void Execute()
            {
                var image = NGM.Utility.ImageManager.ImageEditor.Crop(Image.FromFile(ImageFile), this.Left, this.Top, this.Right, this.Bottom);
                image.Save(@"C:\Users\ngmaster\Desktop\result.png");
            }

     

    프로젝트를 빌드하고, 내문서 > NGM6 > ToolExtension 폴더에 배포하세요. 엔지엠 매크로 에디터를 실행하고, 스크립트에 액션을 추가하세요.

    OAOa67s.png

     

     

    이미지 선택 속성을 클릭하고, 아래 그림을 선택하세요.

    vY6bmbS.png

     

     

    상하좌우 100씩 자르도록한 후 매크로를 실행 해보세요.

    RMCoaIH.png

     

     

    바탕화면에 아래 그림처럼 100씩 잘린 result.png 이미지가 만들어집니다.

    Q5EnBnC.png

     

     

    이렇게 이미지 편집하는 방법에 대해 알아봤는데요. 하나만 더 추가해보도록 할께요. 아래는 이미지를 흑백으로 만드는 코드입니다.

            public override void Execute()
            {
                var image = NGM.Utility.ImageManager.ImageEditor.Crop(Image.FromFile(ImageFile), this.Left, this.Top, this.Right, this.Bottom);
                image = NGM.Utility.ImageManager.OpenCV.GrayScale(image);
                image.Save(@"C:\Users\ngmaster\Desktop\result.png");
            }

     

    다시 빌드 후 배포한 후 에디터에서 실행 해보세요. 아래와 같이 이미지가 흑백으로 바뀐걸 확인할 수 있습니다.

    enbJ31E.png

     

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.