Stedelijk Museum composite patchwork

I found Rijksmuseum, a museum about Dutch art and history in Amsterdam – with a sizable textile collection and an API, accessible with a simple user key. Turns out I was able to render 100 images to a page, but that was about it. Data entries were inconsistent therefore difficult to parse.

Around the same location I found the Stedelijk Museum, which happens to be the largest composite building in the world.

Online, they host a more modern textile collection – from late 1800s to now. The site did not specify an API, but I was able to scrape the images and other data from copying the rendered html (it shows up in Chrome’s Inspector (Command-Alt-I)) after filtering a search for ‘textiles’.

It was from here that I began making my own composite quilts from processing images of these existing textiles, using methods simulating weaving and patchworks.


I was then able to download each image locally combining the img element’s src to find the online location of each image. I ran a WGET command through each of them as a bash script.

I parsed the html and created a CSV of each work as its own array: [filepath to image, last_name, first_name, title, date]. That day I learned: ‘z.j.’ stands for ‘date unknown’ in Dutch. Also the Dutch love abbreviations.

Here are all the images in ascending date (1878 – 2010, followed by z.j.). In total, 410.


I realized that most of the images had a border of background around the textiles themselves, so I used ImageMagick to -crop them into 320×320 squares.

Then I used two of Fred’s ImageMagick Scripts: colorspectrum, and interweave. I also built upon an example of an Image Quilting algorithm using Processing, originally to make tiled textures look more seamless.

From all of this I got 4 different kinds of images:

convert ‘infile’ -gravity Center -crop 320×320+0+0 +repage ‘outfile’
./colorspectrum ‘infile’ ‘outfile’
./interweave -m both -b 32 ‘infile’ ‘infile’ ‘outfile’
Image Quilting for Texture Synthesis and Transfer, Efros


Leave a Reply

Your email address will not be published. Required fields are marked *