- PR -

C# JPEG形式の画像を無劣化の画像品質で保存する方法

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2006-12-02 15:41
[概要]
メモリ上の非圧縮のBitmapオブジェクトをJPEG形式のファイルに無劣化の画像品質で保存したいです。「無劣化」であることを明示的に指定して保存する方法が分かりません。

[質問]
Q1.Image.Saveメソッドのコンストラクタに適切なImageCodecInfoあるいはEncoderParametersを指定すればJPEG形式の画像を無劣化で保存できそうだと考えています。しかし、ImageCodecInfoとEncoderParametersに対して具体的にどのような設定値を渡してやれば良いのかが分かりません。

System.Drawing.Bitmapクラス
Image.Save メソッド (String, ImageCodecInfo, EncoderParameters)
http://msdn2.microsoft.com/ja-jp/library/ytz20d80(VS.80).aspx

Q2.保存する時の画像品質を指定しない場合、JPEG形式で保存した場合の画像品質はどう設定されるのでしょうか?

Image.Save メソッド (Stream, ImageFormat)

[背景]
解析結果を可視化するためにBitmapオブジェクトを使っています。画素の値そのものに価値があるため、保存時の圧縮によって値が変わることが無いようにしたいのです。Bitmap形式で保存すれば無劣化で保存はできますが、ファイルサイズが大きくなってしまいます。JPEG形式を使って無劣化の圧縮形式で保存できればファイルサイズを抑制しつつ正確な値を保持できると考えています。

宜しくお願いします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-12-02 16:17
こんにちは。

画像を無劣化で圧縮するためには PNG など可逆の圧縮方式を選択すべきではないでしょうか。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
ヒトカゲ
会議室デビュー日: 2006/11/29
投稿数: 6
お住まい・勤務地: 大阪
投稿日時: 2006-12-02 16:25
引用:

JPEG形式を使って無劣化の圧縮形式で保存できればファイルサイズを抑制しつつ正確な値を保持できると考えています。




http://ja.wikipedia.org/wiki/JPEG
こちらにあるように、基本的にJPEGでは可逆圧縮は不可能だと思ってもらって構わないと思います。
JPEGの圧縮品質などで最高品質にしても劣化は発生しますし。

ueさんの言うように、PNGなどの可逆圧縮フォーマットを使用するしか無いと思います。
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2006-12-03 19:00
ご回答ありがとうございます。
勉強になりました。
JPEGでは無くPNGを使うことにします。
1

スキルアップ/キャリアアップ(JOB@IT)