Csharp/C#教程:增加图像的分辨率(dpi)分享


增加图像的分辨率(dpi)

我不确定没有一些第三方库会有多可行,但是这里有:

我有一个450×900的图像,我试图打印。
问题是,我用来打印的方法是将原始数据发送到打印机。
图像分辨率为96dpix96dpi,打印机运行速度为203dpi。
所以……图像很小。

我需要增加图像的dpi,以“真实”的尺寸打印它。

Bitmap b0 = LoadBitmap(); //I need to rotate it because for some odd reason it prints backwards and upside down. b0.RotateFlip(RotateFlipType.Rotate180FlipX); //Set a new resolution, 203dpi b0.SetResolution(203, 203); //I need to save and reload the bitmap, because RotateFlip compresses it. //(annoying as hell, took me ages to figure out why it wasn't working.) Stream imgStream = new MemoryStream(); b0.Save(imgStream, ImageFormat.Bmp); b0 = new Bitmap(imgStream); //get my byte array ImageConverter converter = new ImageConverter(); byte[] imageData = (byte[])converter.ConvertTo(b0, typeof(byte[])); 

所以,相当直接。 但SetResolution(…)实际上似乎没有做任何事情。 图像打印的大小完全相同,生成的字节数组大小完全相同。

所以我想弄清楚它到底在做什么。
但我想它需要用额外的像素填充所有图像数据来做我想要的吗?

如果这不是一个实用的方法,是否有一个简单的拉伸方法或类似我可以用来获得所需的效果?

为什么不将图像缩放为更大:

  System.Drawing.Bitmap b0 = LoadBitmap(); double scale = 203/96; int width = (int)(b0.Width * scale); int height = (int)(b0.Height * scale); System.Drawing.Bitmap bmpScaled = new System.Drawing.Bitmap(b0,width, height); 

您必须明白,仅仅更改位图的分辨率(dpi)对其像素内容没有任何影响。 对于位图,“分辨率”仅是元数据。 真正重要的是像素大小。

因此,如果您希望图片在打印中更大,则必须更改打印机分辨率或缩放图像(例如,使用Grzegorz的方法 )。

上述就是C#学习教程:增加图像的分辨率(dpi)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/954636.html

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

精彩推荐