재미로 하는 찬의아빠의 일상,리뷰 블로그
TODAY TOTAL
01-18 02:04
반응형
프로그래밍 (11)
[C#][.Net Framework] 사진,영상 메타데이터 얻는 방법
반응형

아이폰 사진 정리 프로그램을 제작하면서 사진 및 영상의 메타데이터를 얻어올 필요가 있었다.

 

여러가지 검색해 본 결과, 아래 C# API 를 사용하는것이 가장 간편하고 정확했다.



Nuget 패키지 관리를 접속하여 'MetadataExtractor' 를 검색하여 설치합니다.

 

코드는 아래와 같이 함수를 만들어 사용하면 편합니다.

public static string GetMetaData(string filePath, string directoryName, string tagName)
{
    IEnumerable<MetadataExtractor.Directory> directories = ImageMetadataReader.ReadMetadata(filePath);
    MetadataExtractor.Directory directory = directories.Where(s => string.Equals(s.Name, directoryName)).FirstOrDefault();

    if (directory == null)
        return string.Empty;

    MetadataExtractor.Tag tag = directory.Tags.Where(s => string.Equals(s.Name, tagName)).FirstOrDefault();

    if (tag == null)
        return string.Empty;

    return tag.Description;
}

실제 사용은 

string meta1 = GetMetaData(srcFilePath, "QuickTime Metadata Header", "Creation Date");

이런식으로 할 수 있으며, 아래와 같은 메타데이터가 있는 파일에서 

QuickTime File Type
        Major Brand : qt
        Minor Version : 0
        Compatible Brands : qt
QuickTime Movie Header
        Version : 0
        Flags : 0 0 0
        Created : 월 12 30 07:26:16 2019
        Modified : 월 12 30 07:26:17 2019
        TrackId : 600
        Duration : 00:00:01.2670000
        Preferred Rate : 1
        Preferred Volume : 1
        Matrix : [36 values]
        Preview Time : 0
        Preview Duration : 0
        Poster Time : 0
        Selection Time : 0
        Selection Duration : 0
        Current Time : 0
        Next Track Id : 5
QuickTime Track Header
        Version : 0
        Flags : 0 0 15
        Created : 월 12 30 07:26:16 2019
        Modified : 월 12 30 07:26:17 2019
        TrackId : 1
        Duration : 760
        Layer : 0
        Alternate Group : 0
        Volume : 0
        Matrix : 1 0 0 0 1 0 0 0 1
        Width : 1920
        Height : 1080
        Rotation : 0
QuickTime Track Header
        Version : 0
        Flags : 0 0 15
        Created : 월 12 30 07:26:16 2019
        Modified : 월 12 30 07:26:17 2019
        TrackId : 2
        Duration : 759
        Layer : 0
        Alternate Group : 0
        Volume : 1
        Matrix : 1 0 0 0 1 0 0 0 1
        Width : 0
        Height : 0
QuickTime Track Header
        Version : 0
        Flags : 0 0 15
        Created : 월 12 30 07:26:16 2019
        Modified : 월 12 30 07:26:17 2019
        TrackId : 3
        Duration : 760
        Layer : 0
        Alternate Group : 0
        Volume : 0
        Matrix : 1 0 0 0 1 0 0 0 1
        Width : 0
        Height : 0
QuickTime Track Header
        Version : 0
        Flags : 0 0 15
        Created : 월 12 30 07:26:16 2019
        Modified : 월 12 30 07:26:17 2019
        TrackId : 4
        Duration : 760
        Layer : 0
        Alternate Group : 0
        Volume : 0
        Matrix : 1 0 0 0 1 0 0 0 1
        Width : 0
        Height : 0
QuickTime Metadata Header
        GPS Location : +37.6129+127.0354+037.798/
        Make : Apple
        Model : iPhone 8 Plus
        Software : 13.3
        Creation Date : 2019-12-30T16:26:15+0900
File Type
        Detected File Type Name : QuickTime
        Detected File Type Long Name : QuickTime
        Detected MIME Type : video/quicktime
        Expected File Name Extension : mov
File
        File Name : IMG_4432_HEVC.MOV
        File Size : 1302154 bytes
        File Modified Date : 월 12 30 16:26:15 +09:00 2019

아래 값을 얻어낼 수 있습니다.

2019-12-30T16:26:15+0900

 

반응형
  Comments,     Trackbacks
(WPF) 아이폰 사진 정리기 For Windows 제작기.. #2
반응형

딱 일주일만에 시간이 다시 나서 새벽에 끄적거린 결과를 공유 합니다.

 

원래는 하나의 UI 에서 모든 옵션을 선택하도록 할 계획이었으나, 

 

사용 편의가 떨어지고 어떤 순서로 선택해야 하는지 명확하지 않은것 같아

 

아래와 같이 WPF 페이지를 통해 구현할 계획이다.

 

출발경로, 도착경로, 폴더분석, 확장자선택, 복사/이동 여부, 중복파일 처리를 선택하고 나면 

 

최종 선택 옵션을 보여주고 실행 할수 있도록 한다.

 

페이지를 만들다 보니 사진 정리기가 아니라 대량 파일 복사/이동 프로그램이 되어 버렸는데,

 

그래도 다 만들고 나면 꽤나 괜찮게 쓰일 것 같다.

 

최대한 MVVM 패턴 안에서 해결하려다 보니까 생각보다 시간이 많이 걸리는것 같다.

 

시간 날 때마다 개발할 예정이다.

반응형
  Comments,     Trackbacks
(WPF) 아이폰 사진 정리기 For Windows 제작기..
반응형

아이폰에서 찍은 사진과 저장한 사진들을 한번에 Windows PC 에 동기화로 저장하다보니, 

 

수만장의 사진 과 동영상 파일들이 하나의 폴더에 있는 기현상이 일어나게 되었다.

 

게다가, 예전에 찍은 사진인데, 무슨 이유인지 윈도우에서는 수정된 날짜가 최근으로 나오기까지 하니, 

 

관리가 제대로 될리가 없다.

 

대량의 파일을 날짜별로 차곡차곡 정리할 수 있게 해주는 툴을 만들면 좋겠다.

 

대략 화면은 이렇게 할것 같다.

대략 wpf 로 위와 같이 구성했고, 

아래는 Run 버튼을 넣긴 할건데, 옵션이 더 들어가야 할 것 같아서 남겨 두었다.

 

UI 꾸미는 방법은 잘 몰라서 차차 공부하면서 할거고,

시간 되는대로 만들 예정

반응형
  Comments,     Trackbacks
프로젝트 생성하고 Hello world 가 안보여요~~!!! ㅜㅠ
반응형

Q. 프로젝트 생성하고 Design 탭에 Hello World! 가 안보이고 빈페이지만 보여요~

  • 최초 프로젝트 생성 후, Hello World! 가 보이지 않는 경우
  • Message 에 Render problem - Failed to load Appcompat ActionBar with unknown error. 이 출력되는 경우
  • 아무리 Control 을 배치해도 보이지 않는 경우

위 경우라면 아래 방법을 시도해 보세요~.

 

A. 

특정 버전의 안드로이드 스튜디오에서 프로젝트 생성 시, Control 들이 보이지 않는 현상이 있습니다.

본 경우는 3.1.3 버전(June 5, 2018) 버전 기준 입니다.

Copyrightⓒ2020 아미와아삐 All rights reserved.

 

프로젝트 생성 후, Desing 탭에 기본적으로 Hello World! 문구가 보여야 하나 보이지 않습니다.

Copyrightⓒ2020 아미와아삐 All rights reserved.

 

아무리 버튼을 추가해도 Design 에는 반영이 되질 않습니다.

Copyrightⓒ2020 아미와아삐 All rights reserved.

 

이럴땐 좌측 Project 탭에서 build.gradle 을 열어줍니다.

그러면 아래와 같이 dependencies 내부에 implementation 'com.android.support:appcompat-v7:28.0.0' 라는 문구를 볼 수 있는데 이 문구에 alpha1을 추가하여 implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'으로 고쳐줍니다.

implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'으로 되어 있는 경우에도 alpha1 로 고쳐 줍니다.

Copyrightⓒ2020 아미와아삐 All rights reserved.

 

수정하게 되면 우측 상단에 Sync Now 를 눌러 프로젝트 동기화를 진행합니다.

Copyrightⓒ2020 아미와아삐 All rights reserved.

디자인에 가보게 되면 아래와 같이 보이지 않던 Hello World! 와 마구 배치했던 버튼들이 보이게 됩니다.

※ 버전에 따라 현상 및 해결 방법이 다를 수 있습니다.

반응형
  Comments,     Trackbacks
커맨드를 이용한 VisualStudio 프로젝트 빌드 방법(VisualStudio 2015 기준)
반응형

오늘 포스팅은 

VisualStudio 를 실행하지 않고도 빌드를 할 수 있는 방법을 공유 드립니다.

이 기능은 다수의 프로젝트를 관리할 때 사용하기도 하고, 빌드 자동화 솔루션 스크립트에 사용하기도 합니다.


순서는 다음과 같습니다.


빌드 환경 : VisualStudio 2015 Community


첫번째로, IDE 폴더에 진입하여 커맨드빌드에 필요한 파일을 확인합니다.


VS2015의 경우에 필요한 파일은 devenv.com 이며, 기본 경로는 

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.com

입니다.

※ VS2017도 동일합니다.


devenv.com 경로. Copyrightⓒ2018 아미와아삐 All rights reserved.


번째, 커맨드창을 실행하여 솔루션 폴더에 진입합니다.


마지막으로, devenv.com 으로 *.sln 파일을 빌드합니다.


빌드 명령은 아래와 같습니다.

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.com" project.sln /build "Debug|Any CPU"


또한, 빌드 옵션 구성 관리자에 정의 되어 있는 구성/플랫폼에 따라 "Release|x64" 등 다양하게 옵션 처리하여 빌드 가능합니다.


커맨드 빌드 결과. Copyrightⓒ2018 아미와아삐 All rights reserved.



마무리...

위와 같이 VisualStudio 에서 사용할 수 있는 커맨드 빌드를 알아보았습니다.

앞으로 개발에 참고될만한 내용들을 계속 포스팅할 예정입니다. 개발에 참고되길 바랍니다.

반응형
  Comments,     Trackbacks