ImageCapture functions for Mac OS X
For next version of our FileMaker plugin, got a few new ImageCapture functions.
Those functions should allow you to scan images from a flatbed or document feeder scanner. Even for 64-bit and without TWAIN drivers.
So all scanners working in Digital Images application coming with OS X should work just fine in FileMaker. You can query device informations and parameters. And of course you can set parameters like whether you like to get gray scale or color images, the file type, resolution or the area to scan. All scans are performed to files on disk in a given directory. Than you can import them to container fields. Here a sample script:
# set parameters
Set Variable [$physicalWidth; Value:MBS("ImageCapture.GetParameter"; "physicalWidth")]
Set Variable [$physicalHeight; Value:MBS("ImageCapture.GetParameter"; "physicalHeight")]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "documentType"; "USLetter")]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "documentName"; "Scan")]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "resolution"; 300)]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "bitDepth"; 8)]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "pixelDataType"; "RGB")]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "documentUTI"; "jpeg")]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "downloadsDirectory"; "temp")]
Set Variable [$r; Value:MBS("ImageCapture.SetParameter"; "scanArea"; 0; 0; $physicalWidth; $physicalHeight)]
Set Variable [$p; Value:MBS( "ProgressDialog.Reset")]
Set Variable [$p; Value:MBS( "ProgressDialog.SetTitle"; "Scanning" )]
Set Variable [$p; Value:MBS( "ProgressDialog.SetBottomText"; "" )]
Set Variable [$p; Value:MBS( "ProgressDialog.SetTopText"; "Scan from Flatbet scanner." )]
Set Variable [$p; Value:MBS( "ProgressDialog.SetButtonCaption"; "Cancel" )]
Set Variable [$p; Value:MBS( "ProgressDialog.SetProgress"; -1 )]
Set Variable [$p; Value:MBS( "ProgressDialog.Show" )]
Set Variable [$r; Value:MBS("ImageCapture.requestScan")]
Set Variable [$p; Value:MBS( "ProgressDialog.Hide" )]
If [MBS("iserror")]
Show Custom Dialog ["Failed start scan"; MBS("Text.RemovePrefix"; $r; "[MBS] ")]
Exit Script []
End If
Set Variable [$Paths; Value:MBS("ImageCapture.ImagePaths")]
Set Variable [$Count; Value:ValueCount ( $Paths )]
Set Variable [$Index; Value:1]
Loop
Set Variable [$Path; Value:GetValue($Paths; $index)]
New Record/Request
Set Field [Images::Image; MBS("Container.ReadFile"; $path)]
Set Variable [$r; Value:MBS( "Files.Delete"; $Path )]
Commit Records/Requests [No dialog]
Set Variable [$Index; Value:$index + 1]
Exit Loop If [$index > $count]
End Loop