我重载了打印函数System.Drawing.Printing.PrintDocument,我只是在PrintPage中用了两个e.Graphics.DrawImage分别画两副图,没想到检查打印机一看,居然向打印机传的数据有6M多,平均一个3M多,这是怎么回事?我的原图好想是600*450的吧,960dpi请问大家我怎么才能优化一下,别让他们这么大(原图不能变,在下的打印机内存很小,乘不了呀!)

解决方案 »

  1.   

    可能是默认的bitmap格式是bmp的,是比较大的,你可以先用jpg存一下,再进行打印。
      

  2.   

    文件的大小和分辨率有关,一般的为72dpi就可以了,我曾经用过扫描仪扫描图片,调了分辨率为2000dpi扫描的文件有300m左右,我的机器都累死了,后来才发现这个问题!
      

  3.   

    谢谢两位,但是我的图象本来就是jpg格式的,
    至于分辨率,我的打印机的分辨率支持300-350dpi,而我的图象分辨率为96(好象.net中绘制的图象都是96)那么我要想在打印机上打印 300*210 大小的清晰的图象,那么我的图象至少也得宽:300/96*300=937,高:210/96*300=656,我做过实验,图象的宽和高设置的越大,打印出的图象越清晰,但是问题是,那样的话我的打印机接受的数据就得将近6-7M左右,速度慢不要紧,要命的是打印机接受的数据一旦大雨4M,打印出的图象就只有一小条,我想可能是打印机本身内存不够大!请问大家这可怎么办?
      

  4.   

    那么请问kssys() 怎么设置位深?
      

  5.   

    楼主试试这个:
    e.Graphics.CompositingQuality=Drawing2D.CompositingQuality.HighSpeed
      

  6.   

    谢谢kssys() ,但是还是不管用呀!而且我打印的图象对质量要求很高,不能使用低质量的图象,用你的方法回出现很多锯齿,而且打印机接受的数据量也没有太大变化呀!再请教一个问题,PhotoShop对大图象打印,如果图象比打印设备的纸张大的话,默认回进行裁剪我也对图象进行了裁剪,使用的是 g.DrawImage(...),就是对图象进行重画,取其中的一部分图象,但是奇怪的问题出来了,对多副图象裁减后(这些图象尺寸不一,但是裁减后的尺寸都是相同的),怎么打印机获取的数据有的很大,有的很小,这是怎么回事,按理说,如果已经裁减成一样大小图象后,不是应该都是一样大的数据吗?
      

  7.   

    那我该怎么办呢?打印的图象必须清楚,这就必须提高图象尺寸,但是图象尺寸提高了,打印机内存还受不了,裁剪一下图象还不一定是大是小,那我该怎办?要是裁剪图象,那我怎么知道我该裁减多少去呢?图象有什么丰富不丰富的,就是一些照片,照的东西不一样罢了!kssys() 说的也不是很对吧,怎么我的图象裁剪后,大的图象好象都在6.49M这个数字上呀!忘记说了,原始图象导近来的时候,我就已经强制将他们绘制成统一大小了!
      

  8.   

    还有,内存中的bitmap或者image对象的大小(多少M)是怎么计算出来的?是不是width * height * 4(颜色深度,我这里是32位,也就是4个字节)这样酸出来的吗?
      

  9.   

    对象的大小??? SizeOf() 呵呵...