スキャンを自動化するために、Delphi XE 内で WIA 2.0 ライブラリを使用しています。「ShowAcquireImage」関数を使用して、ディスクに保存するイメージを提供しています。画像をpngやjpgなどの圧縮形式で保存したいのですが、ライブラリがビットマップしか保存できないようです。
他の誰かがこの問題を見たことがありますか?回避策はありますか? (大きな bmp ファイルとしてディスクに保存し、TJpegImage/TPngImage オブジェクトに再ロードすることは別として)。
アドバイスありがとうございます。
これは私が現在使用しているコードです:
//...
uses ComObj, WIA_TLB,
//...
procedure TMainForm.ScanWiaDocument(DocumentRef: String);
const
wiaFormatJPEG = '{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';
wiaFormatPNG = '{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}';
var
CommonDlg: ICommonDialog;
AImage: IImageFile;
ImagePath: String;
begin
CommonDlg := CreateOleObject('WIA.CommonDialog') as ICommonDialog;
//Transfer as JPG
try try
AImage := CommonDlg.ShowAcquireImage(ScannerDeviceType,
ColorIntent, //or UnspecifiedIntent, GrayscaleIntent, TextIntent
MinimizeSize, //or MaximizeQuality
wiaFormatJPEG, //image format **<----Only saves in BMP format!**!
False, //AlwaysSelectDevice
False, //UseCommonUI
True); //CancelError
//Save the image
ImagePath := 'C:\temp\scanimage\'+DocumentRef+'.'+ AImage.FileExtension;
AImage.SaveFile(ImagePath);
except
on E:Exception do LogException(E, 'ScanWiaDocument', True);
end;
finally //release interface
CommonDlg := nil;
AImage := nil;
end;
end;