逐个打印图像C#

本文关键字:图像 打印 | 更新日期: 2023-09-27 18:28:54

我已经编写了以下代码来从文件夹中获取所有图像。

以下是代码

string[] files = Directory.GetFiles(@"C:'temp", "*.jpeg");

我在文件中得到了所有的图像名称。现在我想逐一打印所有图像。我尝试了低于代码

foreach (var i in files)
{
    objPrintImage = Image.FromFile(i);
    objDimension = new FrameDimension(new System.Guid());
    PrintDocument objPrintDoc = new PrintDocument();
    objPrintDoc.PrintPage += new PrintPageEventHandler(this.objPrintDoc_PrintPage);
    if (objPrintDoc.PrinterSettings.IsValid)
        objPrintDoc.Print();
}

但是获取错误GDI+中发生了一个通用错误

逐个打印图像C#

Image实现IDisposable,因此您必须处理您的图像

  foreach (var i in files)
    {
        using(var objPrintImage = Image.FromFile(i))
        {
        objDimension = new FrameDimension(new System.Guid());
        PrintDocument objPrintDoc = new PrintDocument();
        objPrintDoc.PrintPage += new PrintPageEventHandler(this.objPrintDoc_PrintPage);
        if (objPrintDoc.PrinterSettings.IsValid)
        {
            objPrintDoc.Print();
        }
        }
    }

编辑-刚刚注意到你在这个例子中甚至没有使用这个图像?


public abstract class Image : MarshalByRefObject, 
ISerializable, ICloneable, IDisposable

这对我有效,不会抛出异常,并且打印开始:

我保存到jpg文件,而不是jpeg,首先是这个:铅笔

我认为问题出在你的图像文件上。

 var files = Directory.GetFiles(@"C:'temp'", "*.jpg");
        foreach (var i in files)
        {         
            var objPrintDoc = new PrintDocument();
            objPrintDoc.PrintPage += (obj, eve) =>
                {
                    System.Drawing.Image img = System.Drawing.Image.FromFile(i);
                    Point loc = new Point(100, 100);
                    eve.Graphics.DrawImage(img, loc);
                };
            objPrintDoc.Print();       
        }