0

我写了下面的代码来从文件夹中获取所有图像。

下面是代码

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+ 中发生一般错误。

4

2 回答 2

2

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
于 2013-08-23T07:35:35.450 回答
0

这对我有用,不会引发异常,并且打印开始:

我保存为 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();       
        }
于 2013-08-23T07:47:56.997 回答