2

SaveFile画像のスキャンに WIA を使用していますが、明らかに圧縮を使用していないため、画像が効率的に保存されていないことに気付きました。

現在、私はこのコードを使用しています:

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

圧縮に WIA を使用する方法はありますか、または圧縮を使用して画像を保存するにはどうすればよいですか?

編集:

次のコードを使用して、ファイル サイズを 25 MB から 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); 
4

2 に答える 2

2

WIA 画像 (ここでは 'image' 変数として示されています) を取得したら、次のようにフィルターを適用して品質を調整し、保存します。

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 の int 値です。1 = 低品質、100 = 最高。

于 2014-10-11T19:00:25.857 に答える
0

基本的に、画像を保存する前に圧縮フィルターを追加する必要があります。この URL では、tiff/jpg 圧縮のサンプルを見つけることができます。

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

于 2012-05-09T05:52:49.437 に答える