🔥 Programming/C#

[C#] 압축파일 압축 풀지않고 이미지 가져오기

스쳐가는비 2023. 3. 2. 20:01

압축을 풀지않고 가져오는방법은 나는 2가지 분류로 나누어 구현해보았다.

흔히들 사용하는 zip 파일 이미지 가져오는것,

우리(개발자)가 사용하는 7z 파일의 이미지를 가져오는것

 

우선 zip파일이미지를 압축풀지않고 이미지를 가져오는 방법이다.

DotNetZip

우선 2가지 방법 모두 Nuget 패키지 다운을 받아서 이용하였다.

DotNetZip 을 다운받은 후에 아래 코드를 참조하자.

using (FileStream fStream = new FileStream(ImagePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (Ionic.Zip.ZipFile zip = Ionic.Zip.ZipFile.Read(ImagePath))
{
    foreach (Ionic.Zip.ZipEntry entry in zip.Entries)
    {
        if (ImageName == entry.FileName)
        {
            CrcCalculatorStream reader = entry.OpenReader();
            MemoryStream m_stream = new MemoryStream();
            reader.CopyTo(m_stream);
            byte[] bytes = m_stream.ToArray();
            Image temp = Image.FromStream(m_stream);
            pBox_Img.Image = (Bitmap)temp.Clone();

            temp.Dispose();
            temp = null;
        }
    }
}

사실 압축파일 내의 이미지를 바이트 배열로 가져와 이미지로 출력하는게 전부이다.

이미지 버퍼로 가져온 이미지를 pictureBox에 뿌려주는건 2가지 방법 다 동일하다.

 

SevenZip

사실 두가지 방법 모두 동일하고, Nuget  패키지만 다르다.

위와 같이 DotNetZip이 아닌 SevenZip을 다운로드 받는다.

 

이후는 아래 코드와 같다.

using (var archive = SevenZipArchive.Open(ImagePath))
{
    var entry = archive.Entries.First(); 
    using (var stream = entry.OpenEntryStream())
    {
        var image = Image.FromStream(stream);
        pBox_Img.Image = image;
    }
}