git @ Cat's Eye Technologies NaNoGenLab / master naive-cut-up / README.md
master

Tree @master (Download .tar.gz)

README.md @masterview markup · raw · history · blame

naive-cut-up

Hypothesis

We hypothesize that if we cut up a newspaper. We also hypothesize that we cut up a newspaper.

Apparatus

  • Python 2.7.6 (probably works with older versions too)
  • Pillow (it might work with PIL too)
  • Some scanned images of newspapers, books, etc., in PNG format, for example obtained by fetch-chronam

Method

  • Start with "blank" canvas. For simplicity, we actually use one of the input images as the "canvas".
  • Pick a source image. Pick a rectangle within that image.
  • Copy the image within the rectangle to a random location on the canvas.
  • Repeat from step 2 until we guess we've covered the canvas.

Detailed procedure

First, we assume some PNGs of scanned newspaper pages involving some topic (in this example, cheese) have been obtained. (PNG format is probably not a strict requirement; if I had built my install of Pillow with JPEG support I could probably load in JPEGs directly. Alas, I did not.)

Then we reorganize these files a little and find the largest one:

$ mkdir pages
$ mv *.png pages/
$ ./naive-cut-up.py largest pages/*
[...]
LARGEST IS pages/ca_5.jp2.png

And we use that one as our base:

$ mv pages/ca_5.jp2.png .

Then

$ ./naive-cut-up.py cutup ca_5.jp2.png pages/*
ca_5.jp2.png <PIL.PngImagePlugin.PngImageFile image mode=L size=6274x8906 at 0x7F427C776128>
pages/ca_0.jp2.png <PIL.PngImagePlugin.PngImageFile image mode=L size=1788x2692 at 0x7F427C7765A8>
pages/ca_10.jp2.png <PIL.PngImagePlugin.PngImageFile image mode=L size=1784x2646 at 0x7F427C776680>
[...]
pages/ca_8.jp2.png <PIL.PngImagePlugin.PngImageFile image mode=L size=1960x2728 at 0x7F427C77DFC8>
pages/ca_9.jp2.png <PIL.PngImagePlugin.PngImageFile image mode=L size=1864x2680 at 0x7F427C781290>
<PIL.PngImagePlugin.PngImageFile image mode=L size=1812x2626 at 0x7F427C77D9E0> (562, 174, 1166, 1049) <PIL.Image._ImageCrop image mode=L size=604x875 at 0x7F427C77D950>
<PIL.PngImagePlugin.PngImageFile image mode=L size=1880x2767 at 0x7F427C776F80> (132, 508, 758, 1430) <PIL.Image._ImageCrop image mode=L size=626x922 at 0x7F427C776EF0>
[...]
<PIL.PngImagePlugin.PngImageFile image mode=L size=1892x2679 at 0x7F427C77DEF0> (612, 1340, 1242, 2233) <PIL.Image._ImageCrop image mode=L size=630x893 at 0x7F427C77DCB0>
<PIL.PngImagePlugin.PngImageFile image mode=L size=1904x2745 at 0x7F427C776E18> (808, 1725, 1442, 2640) <PIL.Image._ImageCrop image mode=L size=634x915 at 0x7F427C77D290>
Writing output.png...

And then we marvel at the result:

$ ristretto output.png

(You may wish to use a less clumsy image viewer than Ristretto, yourself.)

Observations

It may be difficult to tell in this scaled-down sample, but the result was surprisingly thematic in its reference to cheese:

Newspaper cut-up on the theme of cheese