DPI,图像宽度和高度与质量

时间:2018-06-23 03:09:12

标签: c# image-processing graphics dpi

使用以下功能创建jpeg图像

private static void Save(Bitmap bmp1, string path, ImageFormat format)
{
    bmp1.SetResolution(72,72);
    ImageCodecInfo jpgEncoder = GetEncoder(format);
    System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
    EncoderParameters myEncoderParameters = new EncoderParameters(1);
    myEncoderParameters.Param[0] = new EncoderParameter(myEncoder, 100L);

    bmp1.Save(path, jpgEncoder, myEncoderParameters);
}

private static ImageCodecInfo GetEncoder(ImageFormat format)
{

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
    foreach (ImageCodecInfo codec in codecs)
    {
        if (codec.FormatID == format.Guid)
        {
            return codec;
        }
    }

    return null;
}

如您所见,我只使用代码bmp1.SetResolution(72,72);

中的DPI

我想知道输出是否相同,72 DPI版本如何适合网络以及在这种情况下DPI的真正作用是什么 提示:位图是根据贝塞尔曲线生成的

1 个答案:

答案 0 :(得分:2)

首先,72 DPI已成为显示设备的默认DPI。 300以供打印。

SetResolution实际上并没有改变外观。 Use this method to set the desired resolution on a newly created bitmap. Changing the resolution of the image does not change its physical size.

通常会影响“有多大” 应用于设备时的情况。调用SetResolution对其 spatial resolution 无效。

打印时,为图像设置DPI;物理尺寸和地图模式。尝试通过300 DPI激光打印机在A4纸上打印逻辑尺寸为210 mm x 294 mm的72 DPI图像会像素化(因为它被拉伸以填充整张纸)。

但是,如果您维护DPI,而是告诉Windows图像的确是50 mm x 50 mm,并在同一300 DPI打印机上再次打印到A4,它将不会出现像素化,因为它更接近1 :1(尽管现在图像很小)。


重要的是要注意,在上面的两个示例中,位图并不仅在物理上改变了其元尺寸,因此也改变了纸上的尺寸。