ShowAcquireImage WIA только сохраняет в BMP? - PullRequest
2 голосов
/ 26 сентября 2011

Я использую библиотеку 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  **

Ответы [ 2 ]

5 голосов
/ 26 сентября 2011

Вы просите ShowAcquireImage() записать в JPG, если это возможно, но это не должно соблюдать это.Когда выходит ShowAcquireImage(), возвращенный объект ImageFile имеет свойство FormatID, которое указывает формат, который фактически использовался, например, если сканер не поддерживает JPG.Если файл еще не находится в формате JPG, вам придется впоследствии преобразовать его, например, с помощью объекта Wia.ImageProcess.MSDN показывает пример этого .

0 голосов
/ 02 января 2013

Я заметил, что константы, которые вы использовали для JPG и PNG, являются теми, которые я использую для BMP.Может ли это быть вашей проблемой?

...