반응형
프로젝트를 하다 보면 특정 폴더에 들어 있는 이미지 파일들을 한 번에 불러와서 처리해야 할 때가 많습니다.
예를 들어 상품 이미지 관리, 사진 갤러리 앱, 데이터베이스 저장용 파일 변환 작업 등에 이런 기능이 필요합니다.
이번 글에서는 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[] 배열을 활용해 썸네일 생성
정리
이 방식대로 구현하면 폴더 내 이미지 파일을 한 번에 불러오고, 파일명/코드/사이즈를 인덱스별로 일관되게 관리할 수 있습니다.
단순히 파일 이름만 불러오는 것보다 훨씬 응용 범위가 넓어집니다.
반응형
'C#' 카테고리의 다른 글
| C# LINQ (Language Integrated Query) 완벽 가이드 (0) | 2025.06.26 |
|---|---|
| C# Excel 파일 수정, 머지 Merge 방법 (0) | 2025.04.17 |
| C# DataTable 특정 컬럼 제거하기 (0) | 2025.04.09 |
| C# Base64 PDF 변환 (0) | 2025.04.03 |
| C# 콤보박스에 값 넣기 001 ~ 999 (0) | 2024.12.02 |