PicGrab, a WordPress plugin to grab, resize, crop and cache images


English version here
Quante volte nei post WordPress utilizziamo delle immagini prese da qualche parte, poi le adattiamo affinchè pesino meno o calzino bene nel nostro layout.
Con questo plugin l’operazione di download, crop, resize viene fatta in modo automatico.
In più è possibile specificare un tempo di caching delle immagini, per cui l’immagine sorgente sarà prelevata solo alla scadenza del tempo di caching che volendo può essere infinito.
L’utilizzo è estremamente semplice: basta aggiungere l’ attributo “resize” nel tag img dell’immagine che vogliamo caricare/ridimensionare/ritagliare.
Per cui ammettiamo di voler includere nel nostro post questa immagine.
E’ molto grande e pesante, l’ho scelta apposta come esempio.

Per poterne caricare una miniatura quindi occorrerebbe ridimensionarla manualmente.
Con PicGrab invece basta inserire questo codice nel post:

<img src=”http://foto.zellini.org/albums/prima-porta/antiche-mura-villa-di-livia.jpg” resize=”300x200c;inf” />
Il risultato (chiaramente abilitando il plugin) è quello che vedete qui sotto.

E’ anche possibile prendere delle parti specifiche dell’immagine.

<img src=”http://foto.zellini.org/albums/prima-porta/antiche-mura-villa-di-livia.jpg” resize=”(926,502,480,320)300x200c;inf” />

In questo caso la parte dell’immagine che mi interessa è un rettangolo di dimensioni 480×320, a partire dal punto 926,502

<img src=”http://www.takephoto.it/webcam/webcam.php” resize=”300x200c0;30m” />

In questo caso prendo l’immagine di una webcam, quindi imposto il tempo di cache a 30 minuti.

Il formato dell’attributo “resize” è questo:

[(x0,y0,xs,ys)]<xd>x|x<yd>|<xd>x<yd>[c[<crop>]][;<cachetime>]
Esempi: 100x, x200, 100×50, 100x200c50, 100x200c

Come dicevo nell’esempio è possibile applicare il resize e crop a una sola parte dell’immagine sorgente:
in questo caso basta identificare la sezione rettangolare di partenza specificandola tra parentesi tonde.

(100,50,300,200) seleziona un’area rettangolare di dimensione 300×200 pixel a partire dal punto con coordinate (100,100).
A questo rettangolo poi verrà applicato il crop/resize.

Per maggiori informazioni sul resizer potete fare riferimento a questo post.

L’unità di misura di default per cachetime è il secondo, tuttavia è possibile forzare altre unità di misura facendo seguire al numero una lettera che identifica l’unità di misura:

  • m per i minuti (es. 10m = 10 minuti)
  • h per le ore
  • d per i giorni
  • w per le settimane
  • M per i mesi ( di 30 giorni)
  • y per anni (365 giorni)

Il massimo valore è 2^31, ovvero 67 anni circa.
Per un tempo infinito di cache specificare “inf”

In quest’ultimo caso l’immagine, una volta presa, non viene più ricaricata dalla sorgente.

Problemi e dubbi
Il resizer richiede obbligatoriamente le librerie curl e gd e php >=5.
La directory “picscache” deve avere i permessi di scrittura per tutti (777).

L’ultima versione di PicGrab è scaricabile direttamente da WordPress.org qui.

Ringrazio Mambro per il logo con le forbicione!

English version

(sorry in advance for errors)

Picgrab is a plugin that download, resize and crop an image on the fly.
Simply add the “resize” attribute in the img tag you want to grab & resize on your post.
E.g.
<img src=”http://farm4.static.flickr.com/3532/3243887563_700849f242.jpg” resize=”402x200c;66y” />

Once activated, the plugin replaces the attribute “src” on img tags containing the “resize” attribute with something like:

http://yoursite/wp-content/plugins/picgrab/resize.php?url=e%3BI%3AEex%2AVXP%2AsdT7h%2AX%26Qb%5EH%3B8r_yk%25q%28%217J-u%24%29olkPl%2A%60_i2O7%7E%7E%2A%2A%2FE%2F&size=XSe44URI%2Bb%21CS

and removes the “resize” attribute.

The resize.php script included with plugin does the work to grab, crop and resize the image.
It also manages the cache.

The resize attribute format is:

[(x0,y0,xs,ys)]<xd>x|x<yd>|<xd>x<yd>[c[<crop>]][;<cachetime>]
e.g. 100x, x200, 100×50, 100x200c50, 100x200c

Refer to this post for more information on resizer.

Cachetime default unit is second: you can specify other unit after the time value.
E.g. 10m = 10 minutes, 2d = 2 days, 65y = 65 years.

Allowed units are:

  • m for minutes
  • h for hours
  • d for days
  • w for weeks
  • M for months(30 days)
  • y for years (365 days)

max cache value is (2^31) 67 year circa.

Special value “inf” means infinite cache.
In this once grabbed, plugin uses always cached image.

Troubleshooting:
Resizer functions require php curl and gd libraries and php version >=5.
The “picscache” folder must be writable by all (777 permission)

Download the latest PicGrab version directly from WordPress.org here

Many thanks to Mambro for the logo.