ImageMagick is a free open-source software package that allows you to convert image files between formats, resize images and perform other functions. It can be used from the command line or as a COM object using PowerBuilder’s OLEObject functionality.
You can download the installer from here: http://www.imagemagick.org/script/binary-releases.php#windows
You must use one of the installers with the word “dynamic” in the description. I chose the Win32 installer because it offers a higher resolution than the Win64 Dynamic installer.
The command documentation for ImageMagick can be found here: http://www.imagemagick.org/script/command-line-tools.php
There are several commands that are supported by the COM interface.
compare: Compares two image files and returns information about the differences.
composite: Overlaps one image over another resulting in a third image file.
convert: Converts between image formats as well as resizing the image and other actions such as blur, crop, despeckle, and much more.
identify: Describes the format and characteristics of image files.
mogrify: Resizes the image and other actions such as blur, crop, despeckle, and much more. Mogrify overwrites the original image file, whereas, convert writes to a different image file.
montage: Creates a composite image by combining several separate images. The images are tiled on the composite image optionally adorned with a border, frame, image name, and more.
Here is an example that converts a JPG file to PNG:
String ls_origfile, ls_destfile
ls_origfile = “C:\PBSource\PB105\ImageMagick\Totoro.jpg”
ls_destfile = “C:\PBSource\PB105\ImageMagick\Totoro.png”
oMagick = Create OLEObject
li_rc = oMagick.ConnectToNewObject(“ImageMagickObject.MagickImage”)
If li_rc = 0 Then
la_result = oMagick.Convert(ls_origfile, “-format”, “png”, ls_destfile)
MessageBox(“Convert”, “Result: ” + String(la_result))
MessageBox(“ConnectToNewObject”, “Failed: ” + String(li_rc), StopSign!)