아래 코드를 사용하여 비트 맵을 jpeg로 변환합니다. 비트 맵은 300dpi (가로/세로 해상도)로 전달되지만 CreateBitmapSourcefromHBitmap 메서드는 후속 jpeg가 항상 96dpi로 저장되도록 변경합니다.비트 맵에서 JPEG로 변환하고 원본 비트 맵 해상도 유지
원래 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;
}
}