Corso online Responsive Design per imparare a creare siti Web table-less responsivi con HTML5 e CSS3

Facebook non condivide più le immagini? Ho risolto con PHP

Pubblicato da Luca Ruggiero nella categoria Social Marketing » » »

Inizio 2013 col botto? No, in preda al panico causa Facebook: il noto social network sembra non condividere più i link esterni associando la giusta immagine, o non associandola proprio. Una grave perdita in termini di traffico, considerando che il popolo di Facebook, un po' come i bambini, preferisce guardare un libro illustrato invece che leggere.

Perdonate il tono ed in particolare mi perdoni chi si riflette in questo utente-tipo, ma è proprio così. In ogni caso, mi sto rivolgendo a quei Webmaster come me che hanno lo stesso problema, nonostante l'utilizzo del corretto meta tag Open Graph:

<meta property="og:image" content="http://www.miosito.ext/immagini/nome_file.jpg" />

Dopo svariate ricerche in rete senza alcuna risposta (se non su qualche forum sconosciuto in cui si legge "stanno risolvendo", si... vabbè...), mi sono accorto - forse scoprendo l'acqua calda, ma non lo avevo capito ne' letto prima - che Facebook non vuole più immagini di risoluzione troppo piccola.

Nei miei casi - da editore - sui miei siti e giornali online utilizzo immagini piccole: 100X100 pixel o 150X100 pixel. Inutile dire che rifare migliaia, migliaia e migliaia di immagini per le nuove politiche di Facebook è un suicidio. Per cui, ho scelto la soluzione PHP per forzare la soluzione dell'immagine almeno a 160 pixel in larghezza, mantenendo ovviamente in proporzione l'altezza (forse anche 150 pixel è sufficiente, ma non ho provato).

Ho creato quindi un semplicissimo file immagine.php nella root del sito, corredato dal seguente codice:

<?PHP
    /*
        (C) Luca Ruggiero - www.lucaruggiero.it
        Si prega di citare la fonte in caso di riproduzione totale o parziale
    */
    $l = $_GET["l"]; // LARGHEZZA
    $a = $_GET["a"]; // ALTEZZA
    $i = "immagini/" . $_GET["i"] . ".jpg"; // PERCORSO REALE IMMAGINE
    $x = "0"; // COORDINATE IN ORIZZONTALE
    $y = "0"; // COORDINATE IN VERTICALE
    $w = "100"; // COORDINATE LARGHEZZA
    $h = "100"; // COORDINATE ALTEZZA
    $qualita_immagine = 90;
    $immagine_originale = imagecreatefromjpeg($i);
    $immagine_modificata = ImageCreateTrueColor($l, $a);
    imagecopyresampled($immagine_modificata, $immagine_originale, 0, 0 ,$x, $y, $l, $a, $w, $h);
    header("Content-type: image/jpeg");
    imagejpeg($immagine_modificata, null, $qualita_immagine);
    exit;
?>

Ho semplicemente richiamato il percorso fisico dell'immagine (caso 100X100), individuato le coordinate, impostato la qualità ed usato dei parametri che passerò in querystring per stabilire "al volo" le dimensioni.

Ma in questo modo l'immagine sgrana? Si. Pazienza.

Ho quindi riscritto la URL dell'immagine col Mod Rewrite per simulare un'immagine JPG fisica:

RewriteRule ^immagine/(.*)-(.*)-(.*).jpg immagine.php?l=$1&a=$2&i=$3 [L]

Non resta che modificare il meta tag Open Graph:

<meta property="og:image" content="http://www.miosito.ext/immagine/160-160-nome_file.jpg" />

e sperare che Facebook non cambi di nuovo idea...

CANALI DEL BLOG
Hosting (11)
Linux (3)
Office (4)