C#のWinFormsでzipファイルへ画像を追加する

C# コンピュータ
C#

サムネイル用の縮小画像をzipファイルに保存するコードを試作してみました。

namespace _02_image_to_add_zip;

using System.Drawing.Imaging;
using System.IO.Compression;

public partial class Form1 : Form
{
    /*
     zipファイルに画像を追加
    */
    static void AddBitmapToZip(string zipFile, ref Bitmap bmp, string entryName)
    {
        // zipファイルを更新モードで開く
        using var zip = ZipFile.Open(zipFile, ZipArchiveMode.Update);
        // zipファイル内のファイル(エントリー)を作成
        var ns = Path.GetFileNameWithoutExtension(entryName) + ".jpg";
        var entry = zip.CreateEntry(ns, CompressionLevel.NoCompression); // 無圧縮
        // エントリーへ書き込むストリームを作成
        using var fs = entry.Open();
        // ビットマップをzipファイルへ保存
        bmp.Save(fs, ImageFormat.Jpeg);
    }
    public Form1()
    {
        InitializeComponent();

        // zipファイルのパス
        const string zipFile = @"F:\csharp\winforms7\02-image-to-add-zip\test.zip";
        // 追加する画像ファイルのパス
        const string imgFile = @"C:\Users\karet\Pictures\IMG_20240121_081702754_MFNRs.jpg";

        // 画像ファイルの読み込み
        var bmp = (Bitmap)Bitmap.FromFile(imgFile);
        // zipファイルに追加
        var entryName = Path.GetFileName(imgFile);
        AddBitmapToZip(zipFile, ref bmp, entryName);

        // ロードイベント
        this.Load += (s, e) => {
            // 処理完了
            MessageBox.Show($"{zipFile}", "追加処理終了");
            this.Close();
        };
    }
}

コメント