WIA:不压缩时保存文件(WIA: no compression when saving files

2019-09-17 02:36发布

我使用WIA扫描图像,并注意到,作为图像没有被有效地存储SaveFile显然不使用压缩。

目前我使用此代码:

WIA.ImageFile img = (WIA.ImageFile)item.Transfer(WIA.FormatID.wiaFormatPNG);
img.SaveFile(path); 

有没有办法使用WIA进行压缩的方式,不然怎么我还能使用压缩保存图像?

编辑:

使用下面的代码,我能够从25到10 MB减小文件大小。

WIA.ImageFile img = (WIA.ImageFile)item.Transfer(WIA.FormatID.wiaFormatPNG);
WIA.ImageProcess ImageProcess1 = new WIA.ImageProcessClass();
System.Object Object1 = null;
System.Object Object2 = null;
Object1 = (Object)"Convert";
ImageProcess1.Filters.Add(ImageProcess1.FilterInfos.get_Item(ref Object1).FilterID, 0);
Object1 = (Object)"FormatID";
Object2 = (Object)WIA.FormatID.wiaFormatPNG;
ImageProcess1.Filters[1].Properties.get_Item(ref Object1).set_Value(ref Object2);
img = ImageProcess1.Apply(img);
img.SaveFile(path); 

Answer 1:

基本上,您保存图片前,在这个网址,你可以找到TIFF / JPG压缩的样本,你应该添加一个压缩过滤器:

http://www.debugging.com/bug/18157



Answer 2:

你已经得到了你的WIA图片(此处显示为“图像”变量)后,应用过滤器,调节品质,节约,像这样前:

WIA.ImageProcess myip = new WIA.ImageProcess();  // use to compress jpeg.
myip.Filters.Add(myip.FilterInfos["Convert"].FilterID);
myip.Filters[1].Properties["FormatID"].set_Value(WIA.FormatID.wiaFormatJPEG);
myip.Filters[1].Properties["Quality"].set_Value(jpgQuality);

image = myip.Apply(image);  // apply the filters
image.SaveFile(outputFilename);

在这个例子中,是jpgQuality 1和100 1 =低质量,100 =最好之间int值。



文章来源: WIA: no compression when saving files