我正在使用下面的代码将位图转换为 jpeg。位图以 300 dpi(水平/垂直分辨率)传递,但 CreateBitmapSourcefromHBitmap 方法总是将后续 jpeg 更改为以 96dpi 保存。
有没有办法设置源保留原来的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;
}
}