2012-05-09 33 views
1

私は画像をスキャンするためにWIAを使用していますが、その画像は効率的に保存されません。SaveFileは圧縮を利用していないようです。WIA:ファイルを保存するときに圧縮なし

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

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); 

答えて

0

は、基本的には、圧縮フィルタを追加する必要があり、このURLにあなたはTIFF/JPG圧縮のサンプルを見つけることができます:あなたはWIAイメージを得た後

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

+1

サンプルコードを投稿できますか?リンクは崩壊するという不運な傾向があります。 –

0

(「イメージ」変数としてここに示す)、あなたがそうのように、保存する前に、品質を調整するためのフィルタを適用します。この例では

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

関連する問題