画像ファイルを圧縮するツールを教えて頂きたいです。

投稿者: Anonymous

こんにちは。

現在、ファイルサーバから社外のレンタルサーバへ、
画像ファイルをFTP送信する機能を構築・運用しています。

前提・実現したいこと

運用を行う中で、日々のファイル総量が増大しており、
FTP送信処理の通信時間を削減する事が課題となっています。

そこで、画像ファイルを圧縮・リサイズして軽量化を行う
機能を新規に構築したいと考えているのですが、
どのツールを使用すべきか?という点で悩んでおります。

【ツールに求める条件】

・Windows環境で動作する。
・画像のリサイズ・圧縮ができる。
・APIのようにプログラムに組み込み、またはコマンドラインで一括処理ができる。
・.jpgファイルが処理できる。
・有償/無償は問わない。

試したこと

まず最初に「ImageMagick(Magick.Net)」をテストしており、
その対抗馬になるような候補を探しています。

補足情報(言語/FW/ツール等のバージョンなど)

OS:Windows
開発言語:C#, VB.NET

解決

.NET Frameworkに含まれるWindows Imaging ComponentのラッパーであるSystem.Windows.Media.Imaging.JpegBitmapEncoderなどを使用すればよいと思います。

// WindowsBase.dll
// PresentationCore.dll
// using System.IO;
// using System.Windows.Media;
// using System.Windows.Media.Imaging;

// 元画像の読み込み
var fileName = "test.jpg";
var src = BitmapFrame.Create(new FileStream(fileName, FileMode.Open));

// 画像の縮小
var dest = new TransformedBitmap(src, new ScaleTransform(0.5, 0.5));

// 画質を指定して保存する
var enc = new JpegBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(dest));

// 品質: 0-100
enc.QualityLevel = 5;
using (var fs = new FileStream("out.jpg", FileMode.Create))
{
    enc.Save(fs);
}
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *