DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C#:Jpegロスレス回転時の解像度情報欠落

環境/言語:[C# .Net3.5 Windows 7 or 8]
分類:[.NET]

JPEGファイルを読み込み、ロスレス回転を行い再度JPEGファイルとして保存する処理を実装しております。
本処理の実行時に、特定の環境にて画像ファイル保存時に解像度情報が保存されないという事象が発生します。

※.NetFrameworkは3.5
※特定の端末:Windows7 Windows8
 VistaとXPでは発生していない(.NetはSP1適用済み)

本件においての見解・回避策をご教授頂けると助かります。

以下再現可能なソースコードとなります
※ここでは単純化を図るために180回転固定のコードとしておきます

public class JpegLosslessRotator
{
private ImageCodecInfo codecInfo;
private EncoderParameters encParms;

public JpegLosslessRotator()
{
this.codecInfo = GetEncoderInfo("image/jpeg");
this.encParms = new EncoderParameters(1);
this.encParms.Param[0] = new EncoderParameter(Encoder.Transformation, (long)EncoderValue.TransformRotate180);
}

public void Rotate(string srcFilePath, string destFilePath)
{

File.Delete(destFilePath);

using (var fs = File.OpenRead(srcFilePath))
{
using (var pic = Image.FromStream(fs, false, false))
{
pic.Save(destFilePath, this.codecInfo, this.encParms);
}
}

}

private ImageCodecInfo GetEncoderInfo(String mimeType)
{
var encoders = ImageCodecInfo.GetImageEncoders();

for (int j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
{
return encoders[j];
}

}

return null;
}
}
この投稿はマルチポストです。

●マルチポストされている場所
http://bbs.wankuma.com/index.cgi?mode=al2&namber=66140

----------
この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのマナーについて」をお読みください。

●書き込みのマナーについて
http://dobon.net/vb/bbs/index.html

DOBON.NET | プログラミング道 | プログラミング掲示板