簡體   English   中英

增加圖像的分辨率(dpi)

[英]Increase the resolution (dpi) of an image

我不確定沒有一些第三方庫會有多可行,但是這里有:

我有一個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(...)實際上似乎沒有做任何事情。 圖像打印的大小完全相同,結果字節數組的大小完全相同。

所以我想弄清楚它到底在做什么。
但我想它需要用額外的像素填充所有圖像數據來做我想要的嗎?

如果這不是一個實用的方法,是否有一個簡單的拉伸方法或類似我可以用來獲得所需的效果?

為什么不將圖像縮放為更大:

        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的方法 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM