gpt4 book ai didi

c# - 增加图像的分辨率 (dpi)

转载 作者:太空狗 更新时间:2023-10-30 00:11:31 25 4
gpt4 key购买 nike

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

我有一张尺寸为 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(...) 实际上似乎没有做任何事情。图像打印大小完全相同,生成的字节数组大小也完全相同。

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

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

最佳答案

为什么不把你的图片放大:

        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);

关于c# - 增加图像的分辨率 (dpi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com