サムネイル用の縮小画像を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();
};
}
}
実行するとメッセージボックスが表示されディレクトリにtest.zipが出来上がります。
C#でZipファイルを扱うサンプル
.Netのライブラリを使うとzipファイルの作成や展開だけでなく、通常のファイルシステムの様にzipアーカイブ内のファイルの読み書きが出来たりします。基本的な機能をサンプルとして書き起こしてみました。using System;using S...
コメント