{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Make all the faces into one big image\n", "\n", "Having extracted [lots and lots of faces](Finding-all-the-faces-in-the-Tribune-collection.ipynb) from the Tribune photos, I thought I'd combine them in [one big image](https://easyzoom.com/image/127772)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from PIL import Image\n", "import os\n", "from tqdm import tqdm_notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## One big image" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Image dimensions and row length are determined by the number of images\n", "im = Image.new('RGB',(23400, 23450))\n", "row_size = 480\n", "y = 0\n", "x = 0\n", "for index, face in enumerate(tqdm_notebook([f for f in os.listdir('faces') if f[-4:] == '.jpg']), start=1):\n", " face_img = Image.open(os.path.join('faces', face))\n", " face_img.thumbnail((50, 50))\n", " try:\n", " im.paste(face_img, (x, y, x+50, y+50))\n", " except ValueError:\n", " print(face)\n", " if (index % row_size) == 0:\n", " x = 0\n", " y += 50\n", " else:\n", " x += 50\n", "im.save('faces.jpg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Lots of big images for printing\n", "\n", "Creates A3/A4 sized images for easy printing. Perfect for a [pop-up exhibition](https://2018.exploringdigitalheritage.net/uncategorized/faces-of-the-tribune/)!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Image dimensions and row length are determined by the number of images\n", "# 595 x 842 pixels\n", "# 3480 on A4 - 70 x 49\n", "# 230,677 images\n", "cols = 70\n", "rows = 49\n", "# cols = 16\n", "# rows = 11\n", "faces_per_page = cols * rows\n", "number_of_pages = int(230677 / faces_per_page)\n", "\n", "faces = [f for f in os.listdir('faces') if f[-4:] == '.jpg']\n", "for page in range(0, number_of_pages):\n", " y = 0\n", " x = 0\n", " im = Image.new('RGB', (cols*50, rows*50), 'white')\n", " start = page * faces_per_page\n", " for index, face in enumerate(tqdm_notebook(faces[start:start+faces_per_page]), start=1):\n", " face_img = Image.open(os.path.join('faces', face))\n", " face_img.thumbnail((50, 50))\n", " try:\n", " im.paste(face_img, (x, y, x+50, y+50))\n", " except ValueError:\n", " print(face)\n", " if (index % cols) == 0:\n", " x = 0\n", " y += 50\n", " else:\n", " x += 50\n", " im.save('faces-{}.jpg'.format(page))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }