재미로 하는 찬의아빠의 일상,리뷰 블로그
TODAY TOTAL
12-30 21:37
반응형
c# (5)
[C#][.NET framework] Directory.GetFiles() 로 여러 확장자 필터링 하기
반응형

지난번 포스팅에서 폴더 내 파일 목록을 가져오는 방법에 대해 공유 했다면

 

이번엔 복수개의 확장자로 필터링 하는 방법에 대해 포스팅 하려고 한다.



var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.ToLower().EndsWith(".mp3") || s.ToLower().EndsWith(".jpg"));

위 코드와 같이 *.* 로 전체 검색 후, 경로의 마지막이 필터링 원하는 확장자인지 LINQ 를 통해 추출할 수 있다.

 

※기존엔 Directory.GetFiles() 함수를 사용했다면, 해당 함수에 '메모리 이슈'가 있다고 하여 Directory.EnumerateFiles 함수 사용을 권장한다.

 

참조 : https://stackoverflow.com/questions/163162/can-you-call-directory-getfiles-with-multiple-filters

반응형
  Comments,     Trackbacks
[C#][.Net Framework] 폴더 내 파일 목록 가져오기
반응형

이것도 역시 아이폰 사진 정리 프로그램 개발 중 알게된 팁을 공유하고자 한다.



폴더 내 파일 목록을 가져오는 방법은 'Directory.GetFiles()' 함수를 이용하면 간단하다.

 

//하위 디렉토리 포함하여 확장자가 mov 인 파일(*.mov) 목록만 조회하기
string[] path = Directory.GetFiles(SrcPath, "*.mov", SearchOption.AllDirectories);

//해당 디렉토리에서만 모든 파일(*.*) 목록 조회하기
string[] path = Directory.GetFiles(SrcPath, "*.*", SearchOption.TopDirectoryOnly);

파일 갯수에 대한 제한은 찾을수가 없었지만, 필자가 테스트 해본바로 27,000개 파일 배열도 사용 가능했다.

 

이상 간단한 팁 마치겠습니다.

반응형
  Comments,     Trackbacks
[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