2012-05-09 2 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 = 최상입니다.

관련 문제