我需要加载图像文件,在其上设置一些文本,然后使用下面的代码将其保存为图像以进行打印。
private static void A4SizeDpi600() {
const int dotsPerInch = 600; // define the quality in DPI
const double widthInInch = 10; // width of the bitmap in INCH
const double heightInInch = 8; // height of the bitmap in INCH
using (Bitmap bitmap = new Bitmap(Image.FromFile(imageFilePath), (int)(widthInInch * dotsPerInch), (int)(heightInInch * dotsPerInch))) //10*600=6000, 8*600=4800
{
bitmap.SetResolution(dotsPerInch, dotsPerInch);
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.DrawString("Some text here", new Font("Times New Roman", 0.3f, FontStyle.Regular, GraphicsUnit.Inch), Brushes.Black, 1400f, 2100f);
//more text here
// Save the bitmap
bitmap.Save(imageBaseFilePath+ "CertDpi600.png");//file type can be any
}
}
}
问题是生成的图像太大(10MB),输入文件只有600K,大小超过10倍。我想知道是否有办法减少文件大小而不会失去打印质量。
生成的图像文件类型可以是任何类型(pdf,png,bmp,jpeg),只要它具有良好的打印质量和较小的文件大小。
我也对输入文件类型(任何图像文件类型或pdf)开放,只要它产生上述相同的要求。