본문 바로가기

C#

C#에서 폴더 내 이미지 파일 불러오기 (파일명, 확장자, 사이즈까지 한 번에)

반응형

프로젝트를 하다 보면 특정 폴더에 들어 있는 이미지 파일들을 한 번에 불러와서 처리해야 할 때가 많습니다.
예를 들어 상품 이미지 관리, 사진 갤러리 앱, 데이터베이스 저장용 파일 변환 작업 등에 이런 기능이 필요합니다.

이번 글에서는 C#의 System.IO 와 System.Drawing 네임스페이스를 활용하여 폴더 안의 모든 이미지 파일을 불러와서 이미지 객체, 파일명, 확장자 없는 코드(ITEM_

준비 사항

  • .NET Framework 또는 .NET Core 프로젝트 (WinForms, WPF, 콘솔 앱 모두 가능)
  • using System;
  • using System.IO;
  • using System.Drawing;

전체 코드

CD), 파일 크기까지 가져오는 방법을 소개합니다.

 

using System;
using System.Drawing;
using System.IO;
using System.Linq;

class Program
{
    static void Main()
    {
        string folderPath = @"C:\Users\donek\Desktop\제품이미지\2001~3000";

        // 가져올 확장자 정의
        string[] extensions = { ".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tif" };

        // 폴더 내 파일 목록 가져오기 (확장자 필터링)
        var files = Directory.GetFiles(folderPath)
                             .Where(f => extensions.Contains(Path.GetExtension(f).ToLower()))
                             .ToArray();

        // 배열 선언
        Image[] images = new Image[files.Length];
        string[] fileNames = new string[files.Length];
        string[] ITEM_CD = new string[files.Length];
        long[] fileSizes = new long[files.Length];   // 파일 크기 (byte 단위)

        // 반복문으로 데이터 채우기
        for (int i = 0; i < files.Length; i++)
        {
            images[i] = Image.FromFile(files[i]);                 // 이미지 로드
            fileNames[i] = Path.GetFileName(files[i]);            // 파일명 (확장자 포함)
            ITEM_CD[i] = Path.GetFileNameWithoutExtension(files[i]); // 파일명 (확장자 제외)
            fileSizes[i] = new FileInfo(files[i]).Length;         // 파일 크기 (byte 단위)
        }

        // 확인용 출력
        for (int i = 0; i < files.Length; i++)
        {
            double sizeInMB = Math.Round(fileSizes[i] / 1024.0 / 1024.0, 2);
            Console.WriteLine($"{ITEM_CD[i]} ({fileNames[i]}) → {sizeInMB} MB");
        }
    }
}

 

코드 설명

1. 확장자 필터링

string[] extensions = { ".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tif" };

 

  • 이미지 파일만 불러오기 위해 확장자를 미리 지정해 줍니다.

2. 폴더 내 파일 목록 가져오기

var files = Directory.GetFiles(folderPath)
                     .Where(f => extensions.Contains(Path.GetExtension(f).ToLower()))
                     .ToArray();

 

 

  • Directory.GetFiles() 로 폴더 내 모든 파일을 가져온 뒤, 확장자를 체크해서 이미지 파일만 남깁니다.

3. 파일 정보 추출

  • Image.FromFile() → 이미지를 메모리로 로드
  • Path.GetFileName() → 파일명 + 확장자
  • Path.GetFileNameWithoutExtension() → 파일명(확장자 제외) → ITEM_CD 같은 코드로 활용 가능
  • new FileInfo(file).Length → 파일 크기(byte 단위)

4. 출력 결과 예시

2001 (2001.jpg) → 1.25 MB
2002 (2002.png) → 0.87 MB
2003 (2003.bmp) → 2.10 MB

 

 

활용 아이디어

  • ITEM_CD 값을 상품코드로 사용해서 DB에 이미지 매핑
  • fileSizes 를 기준으로 5MB 이상 파일은 업로드 제한 등 검증 로직 추가
  • images[] 배열을 활용해 썸네일 생성

정리

이 방식대로 구현하면 폴더 내 이미지 파일을 한 번에 불러오고, 파일명/코드/사이즈를 인덱스별로 일관되게 관리할 수 있습니다.
단순히 파일 이름만 불러오는 것보다 훨씬 응용 범위가 넓어집니다.

반응형