bBox for FileMaker v0.98 with M1, GraphicsMagick & Sips

We are pleased to release bBox version 0.98, with with new image file functions and M1/Apple Silicon support.

bBox is a free utility plug-in to extend FileMaker solutions to easily use code libraries and macOS-based functions from Python, JavaScript, PHP, Ruby, AppleScript, C/C++, Bash/sh, XPath, and SQLite. Also included is a demo file that has over 220 examples of how you can put bBox functions to work for you.

Some of the changes in version 0.98 are:

  • M1/Apple Silicon binary
  • Ubuntu compatible version (in addition to CentOS)
  • updated to libxml2 version 2.9.12
  • added bBox_GraphicsMagick function & script step
  • added bBox_Sips function & script step
  • modifications to several functions & script steps to add parameters
  • fixed template text used in several functions & script steps to better describe parameters
  • limit POSIX commands to 3 cores
  • new mode to combine stderr with stdout

Apple silicon

The macOS version of bBox is now a “universal” binary, with both Intel and Apple silicon executables in the same plug-in file.

There are two exceptions to the Apple silicon support: the bBox_JQ and bBox_GraphicsMagick functions are still Intel only. Because of how the functions are invoked this can work even if using the Apple silicon version of FileMaker Pro or Server — just be sure that Rosetta has been installed first if using these functions.

New Image File Commands

The sips (Scriptable Image Processing System) command is not well known, perhaps in part because it is only available on macOS. The command is based on macOS’s Core Image library, and because it can often leverage the GPU for transformations and run natively on Apple silicon, it will often give better performance than ImageMagick. Sips can also be used to get metadata from image files.

Some of the file types fully supported are bmp, gif, PDF, PhotoShop, tiff and png. Use the following to get a full list:

bBox_Sips (0; "--format")

The sips command does have some limitations, in particular when resizing images, so for this reason we’ve also added a GraphicsMagick function, which is more widely known and has more transformation options compared to sips. Currently however, the GraphicsMagick binary included with the macOS version of bBox is missing support for several file types. For Linux, file type support will depend on what’s installed by apt or yum, and should have broader file type support.

To get a better idea of what image types are supported use the following queries to find out the file types supported by the convert command (assuming all possible libraries are available), and what libraries are actually included with the version of GraphicsMagick being used:

bBox_GraphicsMagick (0; "convert"; "-list"; "formats")
bBox_GraphicsMagick (0; "-version")

Due to the number of file types and libraries involved, it can take some minor detective work to determine what’s available, so in most cases the best way to check is to test with some actual files, using any transformations you plan on using. The bBox demo file has a couple of examples that can be used as starting points.

Container File References

As a somewhat new feature, a number of bBox functions now support container reference substitution. This allows easy read-only references to a container field as a parameters. The option previously showed up in a more limited form for a few commands in version 0.97.

The full list of functions now supporting this in 0.98 are:

  • bBox_Bash function & script step
  • bBox_Bash function & script step
  • bBox_Curl function
  • bBox_GraphicsMagick function
  • bBox_Grep function & script step
  • bBox_JQ function
  • bBox Python3 Run script step
  • bBox_Ruby function
  • bBox_Sips function
  • bBox_Zsh function & script step

Here’s an example where the container field DATA::file is used as the input to the sips command:

bBox_Sips (
   "format"; "heic";
   "--out"; $dest_path;

How did that work? First, we tell the sips command that we want to convert a file to the HEIC format. Next, we specify the source file, which here is a container field. But sips needs a POSIX file path, so bBox creates a temporary file using the container field’s data, and uses the path to the temporary file as the next sips parameter. Finally, to save the result out to a different file than our source, we specify a different output POSIX file path to use for the destination file.

Requirements & Known Issues

There is a known issue with the bBox_MacNotification function not working on Big Sur. This might be fixed in a later build, but no firm ETA yet.

Some requirements have changed with 0.98. The minimum FileMaker version supported is now 18, and on macOS, the minimum OS version is now 10.14.6. The CentOS requirements remain the same, and in this version we’ve added Ubuntu 18.04 support as a separate binary.

If you still need a copy for older versions of FileMaker or macOS, bBox 0.97 is available via this link:

Leave a Reply