以下のコードを使用して、ビットマップを jpeg に変換しています。ビットマップは 300 dpi (水平/垂直解像度) で渡されますが、CreateBitmapSourcefromHBitmap メソッドは常に後続の jpeg を 96 dpi で保存されるように変更します。
元の 300dpi を保持するようにソースを設定する方法はありますか? dpiX と dpiY の値は読み取り専用です。
前もって感謝します。
public static MemoryStream GetJpgMemoryStream(Bitmap bitMap, int jpgQuality)
{
IntPtr hBitmap = bitMap.GetHbitmap();
try
{
BitmapSource source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
var jpegBitmapEncoder = new JpegBitmapEncoder();
jpegBitmapEncoder.QualityLevel = jpgQuality;
jpegBitmapEncoder.Frames.Add(BitmapFrame.Create(source));
var jpegStream = new MemoryStream();
jpegBitmapEncoder.Save(jpegStream);
jpegStream.Flush();
return jpegStream;
}
}