|
分類:[C#]
お世話になっております。
現在C#にて、指定した画像を読み込んだ後にリネームし、保存し直すソフトを作成しています。
そこで質問なのですが、LZWで圧縮した16bit Tiff画像を、
ビット数を変えずに非圧縮で保存し直すにはどうすれば良いのでしょうか。
調べた際に、Bitmapクラスの変数に格納してから
圧縮方法を指定して保存しする方法があり、試してみたのですが、
この方法だと32bitで画像が保存されてしまい、16bitに直したとしても、
本来の色情報が失われているのではないかと考えています。
調べた内容を試した処理は以下のものになります。
private void SaveMultiTiff(string fileName, Bitmap baseImages, System.Drawing.Imaging.EncoderValue compressionScheme)
{
//TIFFのImageCodecInfoを取得する
System.Drawing.Imaging.ImageCodecInfo ici = null;
//GDI+ に組み込まれたイメージ エンコーダに関する情報をすべて取得
System.Drawing.Imaging.ImageCodecInfo[] encs = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
//指定されたMimeTypeを探して見つかれば返す
foreach (System.Drawing.Imaging.ImageCodecInfo enc in encs)
{
if (enc.MimeType == "image/tiff")
{
ici = enc;
break;
}
}
if (ici == null) return;
Bitmap tiffImage = baseImages;
System.Drawing.Imaging.EncoderParameters ep = null;
//圧縮方法を指定する
ep = new System.Drawing.Imaging.EncoderParameters(1);
ep.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)compressionScheme);
tiffImage.Save(fileName, ici, ep);
ep.Dispose();
return;
}
[開発環境]
OS:Windows7
開発ソフト:Visual studio 2012
ご存知の方がいらっしゃいましたら、ご教授頂けると幸いです。
宜しくお願い致します。
|