LOL - Created Mosaic Utility for Combing Images

I was not impressed with any of the image mosaic creators on the market. None of the ones I tried actually worked as they always cropped off. There are a couple online ones but these are very slow and usually only allows you to do 2 images at once.

I wanted to combine multiple images into one image without cropping any of the images; maximizing their sizes, and not losing image quality by always adjusting the larger images to the size of the smaller images.

This comes in handy if you have more than 12 images for one item or you want to combine images for multiple items you decide to sell in a lot.

I created a created desktop utility app using Xojo. The grid of squares is for viewing thumbnails and manipulating the images into groups. You can select files via the Mac’s dialog box by pressing the Open button at the top or you can drag images form the Finder into the imagewell below that button. In the first image I’ve dragged and dropped a bunch of images into the imagewell and the progressbar has begun to move.

In the second image all the images have opened in the grid of squares with their sizes and file names. You can rearrange these images by dragging one into another grid square.

The tiny squares are for assigning the pictures to different groups to be saved as combined images. Two of the little squares are used for displaying a single image in a larger square or deleting a image shown in the square.

In the third image I’ve decided to combine two images on the third and fourth rows into one image by assigning them to group 1.

In the fourth image I’ve pressed the button with “1” on it to bring up a save dialog window to save group 1, with a default name of “p” which I changed to the name “glassware”.

The fifth image shows the resulting combined 2153 x 2392 image.

This app allows you to open to 48 images at once and combine them into as many 12 groups. The three squares to the far right below the controls are extra picture manipulation room.

I have no formal training in programming, just making various utilities for my own use via Xojo (i.e., Realbasic, Real Studio).


1 Like

Impressive, seems to be handy tool! :+1:


I mainly use it for single items with more than 12 images to quickly reduce the number to 12 images. The example images are items I sold through

It much faster than online tool such as:

Since I have 48GB of RAM installed and the app was compiled for 64-bit usage I am able to load all the images into RAM after they have been selected or dragged from the Finder. The resulting merged images is also constructed in RAM so it can be saved almost instantly.

A group of photos taking approximately 95MB on disk translates to around 1.31GB RAM usage for the app - the images taking around 15 seconds to be transferred from disk to RAM. I’d be checking my email during this time so I am not any time.

The images do not need to be next to each, just assigned the same group number. Here we have two images in the top row an two in the forth row joined into a new image. The third merged image used images dragged from four different rows. The last images have been reduced to 30% of their original size for the forum.

I’ll probably form the small square canvas based controls into a frame around each image icon later on as opposed to temporary overlaying the images with these controls as this was a initial quick proof of concept.

Screen Shot 2022-10-26 at 4.09.04 PM
2 copy
3 copy

Is it available for download?

1 Like

No, its for my own use.

You could make something similar using Xojo. The larger squares are custom canvas controls.

Will take a lot of RAM if you are working with large images. My camera takes 5184 x 3456 images. Opening 48 of these uncropped images will take 6.9 to 7GB +/- RAM and about 40 seconds. Combining four of these images at full size into one image will temporary raise the RAM usage to around 8.2 to 8.8GB.

Xojo does not compile applications that can run two threads at once, but shared threading, thus any commercial version would need to be written in another programming language to take advantage of multiple processors handling multiple threads at the same time.