ShowAcquireImage WIA только сохраняет в BMP?
Я использую библиотеку WIA 2.0 в Delphi XE для автоматизации сканирования. Я использую функцию " ShowAcquireImage ", чтобы предоставить изображение для сохранения на диск. Я хочу сохранить изображение в сжатом формате, таком как png или jpg, но библиотека, кажется, сохраняет только растровое изображение.
Кто-нибудь еще видел эту проблему, и есть ли обходной путь? (Помимо сохранения на диск в виде большого файла BMP и повторной загрузки в объект TJpegImage/TPngImage, то есть).
Спасибо за любой совет PhilW.
Этот код я сейчас использую:
//...
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;
2 ответа
Вы спрашиваете ShowAcquireImage()
захватить в JPG, если это возможно, но это не должно соблюдать это. когда ShowAcquireImage()
выходы, возвращенные ImageFile
объект имеет FormatID
свойство, которое указывает формат, который фактически использовался, например, если сканер не поддерживает JPG. Если файл еще не находится в формате JPG, вам придется преобразовать его впоследствии, например, с помощью Wia.ImageProcess
объект. MSDN показывает пример этого.
Я заметил, что константы, которые вы использовали для JPG и PNG, являются теми, которые я использую для BMP. Может ли это быть вашей проблемой?