原因は調べていませんが画像のdpiを固定してあげると解決するようなのでdpiを変換するメソッドを作成してみます。
public static System.Windows.Media.Imaging.BitmapSource
ConvertToDPI96(System.Windows.Media.Imaging.BitmapSource src)
{
const double dpi = 96;
if (src.DpiX == dpi && src.DpiY == dpi) return src;
int width = src.PixelWidth;
int height = src.PixelHeight;
int stride = (width * src.Format.BitsPerPixel + 7) / 8;
byte[] pixelData = new byte[stride * height];
src.CopyPixels(pixelData, stride, 0);
var dest = System.Windows.Media.Imaging.BitmapImage.Create(
width,
height,
dpi,
dpi,
System.Windows.Media.PixelFormats.Bgra32,
null,
pixelData,
stride);
dest.Freeze();
return dest;
}
変換前画像:72.00900268554688dpi 変換後画像:96dpi
コメント