A script to create the Droste effect with any image. Has two modes -- orthogonal mode (
-o) for rectangular boxes, and skew mode (
-s) for skewed boxes.
$ git clone github.com/EkanshdeepGupta/infinite-recursive-image $ cd ./infinite-recursive-image $ python ./nested_photo.py -h usage: nested_photo.py [-h] [-o | -s] [-n COUNT] filename dimensions positional arguments: filename the filename of the image to be processed. dimensions the pixel dimensions of the box to create the effect. In orthogonal mode, the dimensions have to be given as "x1,y1,x2,y2". In skew mode, dimensions have to be given as "(x1,y1),(x2,y2),(x3,y3),(x4,y4)" optional arguments: -h, --help show this help message and exit -o, --orthogonal flag used to run the script on an orthogonally rectangular box. Defaults to orthogonal mode. -s, --skew flag used to run the script on a non orthogonally rectangular box. -n COUNT, --count COUNT number of times to recurse. Defaults to 10.
For orthogonal mode, the dimensions can be given as a comma separated string of four numbers, which denote the pixel coordinates of the left, top, right, bottom edges respectively, of the box on which to generate the Droste effect. Since orthogonal mode only works on orthogonal rectangles, only the edges can be specified. For non-rectangular boxes, use skew mode with the
-s flag. In orthogonal mode, the image is cropped accordingly to maintain the aspect ratio with the rectangular box.
For skew mode, the dimensions can be given as a string of four 2-tuples of numbers, which denote the pixel coordinates of the top-left, top-right, bottom-right, bottom-left corners respectively, of the box on which to generate the Droste effect. In skew mode, the perspective shift effect is used to make the image fit the dimensions given.
The pixel coordinates for dimensions can be found using any photo-editing software like GIMP or Adobe Photoshop.
Get the outputs stored in
./examples as follows:
$ python nested_photo.py ./examples/modern-tv-cabinet.jpg "552,238,1049,540"
$ python nested_photo.py ./examples/gray-wooden-sideboard.jpg "721,217,1217,550"
$ python nested_photo.py ./examples/black-white.jpg -s "(246,312),(889,456),(887,826),(250,839)"
$ python nested_photo.py ./examples/living-room.jpg -s "(450,1020),(1196,1036),(1197,1430),(449,1476)"
$ python nested_photo.py "./examples/seats.jpg" -s "(1231,281), (2357,265), (2367,1009), (1244,1025)"