我不确定如果没有一些第三方库这将是多么可行,但这里是:
我有一张尺寸为 450x900 的图像,我正在尝试打印。
问题是,我用来打印的方法是将原始数据发送到打印机。
图像分辨率为 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(...) 实际上似乎并没有做任何事情。图像打印的大小完全相同,生成的字节数组大小完全相同。
所以我试图弄清楚它实际上在做什么。
但我想它需要用额外的像素填充所有图像数据来做我想做的事情?
如果这不是一种实用的方法,是否有一种简单的拉伸方法或类似方法可以用来获得所需的效果?