De Grote Polaroidmachine!

In het verhaaltje ‘Polaroids maken’ kun je lezen hoe je een foto het kenmerkende uiterlijk van een Polaroid-printje kunt meegeven. Maar wie een grotere serie foto’s zo wil verwerken, is daar wel even zoet mee. Gelukkig kunnen we dit ook grotendeels automatiseren en wel met de Grote Polaroidmachine! Lees gauw verder.

Vooral het vinden van de goede vierkante uitsnede ten behoeve van de Polaroid-print kost wat tijd. Daarom heb ik een script gemaakt dat van elke foto – portret/verticaal en landschap/horizontaal – zeven vierkanten maakt, te beginnen aan de linkerkant en dan in even zoveel stappen naar de rechterkant van de foto. Verticale foto’s worden net zo behandeld, zij het van onderen naar boven. Vervolgens plaatsen we daar een Polaroid-kader omheen en kunnen we per foto uit zeven uitsneden kiezen en zo snel de mooiste compositie vinden.

pola.montage

Voorwaarde is wel dat de exif-info van de foto niet verminkt of afwezig is, dan werkt deze mooie polamachine niet. Foto’s die vanuit GIMP geëxporteerd worden naar een jpg, hebben soms foute exif-info aan boord, zoals de oriëntatie-aanduiding ‘horizontaal’, terwijl het toch echt een foto in portretstand betreft.

ImageMagick en G’MIC

Wat we nodig hebben zijn de pakketten ImageMagick en G’MIC (gmic). Het laatste moet apart geïnstalleerd worden en is niet gelijk aan gimp-gmic. Elk zichzelf respecterend besturingssysteem heeft ImageMagick standaard al geïnstalleerd; Gmic moet er even worden bijgeplaatst en is te vinden in de diverse softwaremanagers van de Ubuntu-familie en ongetwijfeld ook van veel anders Linux-distributies. Beide programma’s zijn ook beschikbaar voor Mac OSX en Windows. Het script is niet getest op de laatste twee platforms.

Gebruik kopieën!

Het script dat we gaan gebruiken verwerkt foto’s naar Polaroids, dat wil zeggen dat de maten worden aangepast en er een kader omheen wordt geplaatst. De foto’s die aan dit script worden gevoerd, worden dus gewijzigd. Dit betekent dat je ALTIJD op kopieën moet werken. Kopieer dus eerst alle foto’s waarvan je een Polaroidje wilt naar een apart mapje. Vervolgens kun je het script draaien dat je hieronder in zijn geheel kunt kopiëren. Het script doet het volgende.

Eerst gaan we de foto op maat brengen. Zoals in het verhaaltje ‘Polaroids maken’ is uiteengezet, hebben we uiteindelijk een plaatje nodig van 920 pixels in het vierkant. Daar gebruiken we het commando mogrify voor, dat onderdeel is van ImageMagick. Door x920 als maat op te geven, wordt de kortste zijde van de foto naar 920 pixels gebracht. In terminalproza ziet dat er zo uit:

for i in `ls *.jpg *.JPG *.jpeg *.png *.PNG *.tif *.tiff 2>/dev/null`;
 do echo $i; mogrify -geometry x920 $i;
done;

Als je foto’s een andere extensie hebben, bijvoorbeeld .abc, dan voeg je hierboven achter *.tiff nog *.abc toe. Maar – uiteraard – geen raw-foto’s gaan voeren, dat werkt niet!

Zeven vierkanten

Nu hebben we rechthoekige afbeeldingen van 920 bij bijvoorbeeld 1389 pixels. Dit laatste is camera-afhankelijk, maar het zal iets in die orde zijn. Nu gaan we van links naar rechts zeven keer een vierkant uitsnijden, telkens net wat opgeschoven. De eerste vierkante foto zal in het geval van een landschap het linkerdeel bevatten, de tweede iets verschoven naar rechts en de laatste bevat een vierkant aan de rechterzijde van de foto. Voor foto’s in portretstand worden pola’s van beneden naar boven gemaakt.

Vervolgens schakelen we gmic in, dat van elk plaatje met een enkel commando polaroids maakt:

gmic $i.$y.jpg -polaroid 13,23 -o $i.$y.jpg,85

Die 13 en 23 zijn de maten van het kader, de 85 achter jpg is de jpg-compressiefactor. Deze drie variabelen zijn natuurlijk naar wens aan te passen. Zoals je in onderstaande afbeeldingen kunt zien, zijn zowel de pixelwaarden als de afdrukresolutie precies zoals we die hebben wilden.

afb.schalen1

afb.schalen2

Ik heb resultaten van dit script laten afdrukken op 9x13cm en die zien er prima uit! Het enige wat je nog moet doen is de print aan de lange zijde wat bijsnijden tot 10,7cm.

Het complete script zie je hieronder. Je kunt dit met de muis selecteren en kopiëren en vervolgens op je eigen pc zetten. Vergeet niet het bestand eerst uitvoerbaar te maken door ‘chmod +x polaroid.maker.sh’ te typen, of welke naam je er ook aan hebt gegeven. Draaien met ./polaroid.maker.sh

# polaroid.maker.sh
# script om een serie foto's een polaroid-aanzien te geven 
# datum: jan15
# auteur: Paul Matthijsse
# WERKT op foto's waarvan de exif-info intact is

# gebruik:
# KOPIEER de te verwerken foto's naar een nieuw mapje, plaats dit script in dat mapje, maak het script uitvoerbaar door in een terminalvenster met het cd-commando naar de betreffende map te gaan en dan 'chmod +x polaroid.maker.sh' te typen. Activeer het script door ./polaroid.maker.sh in de terminal te typen.
# LET OP. Dit script wijzigt de foto's in het mapje, werk daarom dus altijd met en op kopieën!
# -----------------------

#!/bin/bash
# foto verkleinen naar korte zijde = 920, lange zijde schaalt automatisch mee
for i in `ls *.jpg *.JPG *.jpeg *.png *.PNG *.tif *.tiff 2>/dev/null`;
  do echo $i; mogrify -geometry x920 $i;
done;

for i in `ls *.jpg *.JPG *.jpeg *.png *.PNG *.tif *.tiff 2>/dev/null`
do
  if [ `identify -format '%[EXIF:Orientation]' $i` -eq 8 ]
  # verticaal/portretmodus
    then convert $i -rotate 270 $i;

    # maak 7 vierkanten door vierkant steeds iets te verschuiven:
    # plaats breedte en hoogte in 2 variabelen:

    let "breedte=`identify -format '%w' $i`"
    let "hoogte=`identify -format '%h' $i`"
    let "stap=($hoogte-$breedte)/6"

    let "y=0"
    for (( j=0; j<($hoogte-$breedte); j+=$stap ))
    do
      convert $i -crop 920x920+0+$j $i.$y.jpg;
      gmic $i.$y.jpg -polaroid 13,23 -o $i.$y.jpg,85
      # 85: bewaar met jpg-compressie van 85
      let "y+=1";
    done

    else # horizontaal/landschapmodus
    # maak 7 vierkanten door vierkant steeds iets te verschuiven:
    # plaats breedte en hoogte in 2 variabelen:
    let "breedte=`identify -format '%w' $i`"
    let "hoogte=`identify -format '%h' $i`"
    let "stap=($breedte-$hoogte)/6"
    let "y=0"
    for (( j=0; j<($breedte-$hoogte); j+=$stap ))
    do
      convert $i -crop 920x920+$j+0 $i.$y.jpg;
      gmic $i.$y.jpg -polaroid 13,23 -o $i.$y.jpg,85
      let "y+=1"
    done
  fi
done


pm|jan15

Advertenties