Tutorial WordPress affidabili, quando ne hai più bisogno.
Guida per principianti a WordPress
WPB Cup
25 Milioni+
Siti web che utilizzano i nostri plugin
16+
Anni di esperienza con WordPress
3000+
Tutorial WordPress di esperti

Come rendere le immagini in scala di grigi in WordPress

Ti ritrovi costantemente a passare da WordPress a un editor di foto solo per rendere le immagini in scala di grigi prima di caricarle? È un processo noioso e inefficiente modificare ogni foto singolarmente in anticipo.

Fortunatamente, attraverso anni di sperimentazione con WordPress, abbiamo scoperto un modo semplice per rendere automaticamente le immagini in scala di grigi durante il caricamento, facendoti risparmiare tempo prezioso.

In questo articolo, ti mostreremo come rendere le immagini in scala di grigi in WordPress mentre le carichi sul tuo sito, passo dopo passo.

Immagini in scala di grigi in WordPress

Quando dovresti usare immagini in scala di grigi in WordPress?

Le immagini in scala di grigi rimuovono tutte le informazioni sul colore, lasciando i colori delle immagini per mostrare solo sfumature di grigio, variabili tra bianco e nero.

In determinate situazioni, l'uso di immagini in scala di grigi può essere vantaggioso per il tuo sito web WordPress. Ad esempio, puoi usarlo per migliorare la leggibilità degli oggetti mostrati nell'immagine.

Oppure, potresti semplicemente voler usare immagini in scala di grigi per creare un look classico e senza tempo per il tuo sito web.

D'altra parte, le immagini in scala di grigi sono anche comunemente utilizzate per l'elaborazione delle immagini a causa delle loro piccole dimensioni. Ciò consente agli sviluppatori di eseguire operazioni complesse in tempi più brevi.

Detto questo, vediamo come puoi trasformare le tue immagini in scala di grigi in WordPress quando le carichi.

Rendere le immagini in scala di grigi al caricamento in WordPress

Quando si tratta di aggiungere immagini in WordPress, dovresti modificarle prima di caricarle utilizzando un software di fotoritocco come Photoshop e convertire le immagini a colori in scala di grigi.

Se hai centinaia o migliaia di immagini da caricare, può richiedere molto tempo per modificare ogni immagine manualmente.

Tuttavia, puoi trasformarle automaticamente in immagini in scala di grigi al momento del caricamento. Per iniziare, tutto ciò che devi fare è aggiungere il seguente codice al file functions.php del tuo tema:

add_filter('wp_generate_attachment_metadata','rb_bw_filter');
   
function rb_bw_filter($meta) {
   
    $path = wp_upload_dir(); // get upload directory
    $file = $path['basedir'].'/'.$meta['file']; // Get full size image
   
    $files[] = $file; // Set up an array of image size urls
   
    foreach ($meta['sizes'] as $size) {
        $files[] = $path['path'].'/'.$size['file'];
    }
   
    foreach ($files as $file) { // iterate through each image size
   
        // Convert image to grayscale credit to http://ottopress.com/2011/customizing-wordpress-images/
   
        list($orig_w, $orig_h, $orig_type) = @getimagesize($file);
        $image = wp_load_image($file);
        imagefilter($image, IMG_FILTER_GRAYSCALE);
        switch ($orig_type) {
            case IMAGETYPE_GIF:
                imagegif( $image, $file );
                break;
            case IMAGETYPE_PNG:
                imagepng( $image, $file );
                break;
            case IMAGETYPE_JPEG:
                imagejpeg( $image, $file );
                break;
        }
    }
    return $meta;
}

Un modo semplice per aggiungere codice ai file del tema è utilizzare il plugin WPCode per WordPress.

È il miglior plugin per snippet di codice che ti aiuta a eseguire snippet di codice senza la necessità di modificare manualmente il file functions.php del tuo tema. In questo modo, non dovrai preoccuparti di interrompere il tuo sito.

WPCode

Innanzitutto, dovrai scaricare e installare il plugin gratuito WPCode sul tuo sito. Se hai bisogno di aiuto, segui la nostra guida su come installare un plugin di WordPress.

Nota: La versione gratuita di WPCode offre tutto ciò di cui hai bisogno per aggiungere facilmente codice personalizzato in WordPress. Per funzionalità più avanzate come una libreria di snippet cloud privata, snippet pianificati, pixel di conversione e altro ancora, puoi passare a WPCode Pro.

Dopo l'attivazione, puoi accedere a Snippet di codice » + Aggiungi nuovo dalla tua bacheca di WordPress.

Quindi, naviga verso l'opzione 'Aggiungi il tuo codice personalizzato (Nuovo snippet)' e fai clic sul pulsante '+ Aggiungi snippet personalizzato'.

Aggiungere codice personalizzato in WPCode

Successivamente, devi selezionare 'Snippet PHP' come tipo di codice tra le opzioni che appaiono.

Seleziona Snippet PHP come tipo di codice

Ora, nella pagina Crea snippet personalizzato, inserisci un nome per il tuo snippet. Può essere qualsiasi cosa per aiutarti a ricordare a cosa serve il codice.

Quindi, incolla il codice sopra nell'area 'Anteprima codice'.

Aggiungi snippet di codice per immagini in scala di grigi

Dopo aver inserito il codice, puoi scorrere verso il basso fino alla sezione ‘Inserimento’.

Qui, puoi lasciare selezionata l'opzione ‘Inserimento automatico’. Questo inserirà ed eseguirà automaticamente il codice per te.

Metodi di inserimento per snippet in WPCode

Infine, torna in cima allo schermo e sposta l'interruttore da ‘Inattivo’ ad ‘Attivo’ e fai clic sul pulsante ‘Salva Snippet’.

Salva e attiva il tuo snippet di codice personalizzato

Successivamente, puoi testare il codice modificando o aggiungendo una nuova pagina. Quando sei nell'editor di WordPress, fai clic sul pulsante ‘+’ e aggiungi un blocco Immagine.

Ora puoi caricare qualsiasi immagine sul tuo blog WordPress, e verrà automaticamente convertita in un'immagine in scala di grigi.

Converti immagini in scala di grigi al caricamento

Speriamo che questo articolo ti abbia aiutato a imparare come rendere le immagini in scala di grigi in WordPress. Puoi anche consultare la nostra guida su come aggiungere la modalità scura al tuo sito WordPress e le nostre scelte esperte del miglior software di web design.

Se ti è piaciuto questo articolo, iscriviti al nostro canale YouTube per tutorial video su WordPress. Puoi anche trovarci su Twitter e Facebook.

Dichiarazione: Il nostro contenuto è supportato dai lettori. Ciò significa che se fai clic su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come è finanziato WPBeginner, perché è importante e come puoi supportarci. Ecco il nostro processo editoriale.

Il Toolkit WordPress Definitivo

Ottieni l'accesso GRATUITO al nostro toolkit - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Interazioni del lettore

17 CommentsLeave a Reply

  1. Ottimo consiglio, vorrei solo menzionare che per molti utilizzi potrebbe essere meglio farlo semplicemente tramite il filtro CSS, ad esempio:
    img.bw {
    filter: grayscale(1);
    }
    puoi persino, ad esempio, mostrare in bianco e nero per impostazione predefinita e a colori al passaggio del mouse, oppure puoi fare un'animazione da scala di grigi a colori completi e viceversa, ad esempio:
    img.bw {
    filter: grayscale(0);
    }

    img.bw.grey {
    filter: grayscale(1);
    transition-property: filter;
    transition-duration: 1s;
    }

    non credo neanche io che il filtro wp_generate_attachment_metadata sia quello appropriato da usare a causa del suo richiamo nella creazione di meta, non solo nella creazione di immagini, e nell'effettuare una seconda manipolazione dell'immagine, ma la soluzione appropriata sarebbe molto più lunga, quindi capisco perché è fatto in questo modo

  2. Funziona bene ma durante il caricamento, WP 4.3 genera un errore nella libreria multimediale.
    Penso di aver applicato tutte le correzioni scritte nei commenti, ma l'errore persiste.

    il mio codice è così:

    add_filter(‘wp_generate_attachment_metadata’,’themename_bw_filter’);
    function themename_bw_filter($meta) {
    $time = substr( $meta[‘file’], 0, 7); // <- ottiene l'ora corretta del caricamento
    $file = wp_upload_dir( $time ); // <- individua la directory di caricamento corretta
    $file = trailingslashit($file[‘path’]).$meta['sizes']['slide-pic']['file'];
    if( $file ) {
    list($orig_w, $orig_h, $orig_type) = @getimagesize($file);
    }
    $image = wp_load_image($file);
    imagefilter($image, IMG_FILTER_GRAYSCALE);
    switch ($orig_type) {
    case IMAGETYPE_GIF:
    imagegif( $image, $file );
    break;
    case IMAGETYPE_PNG:
    imagepng( $image, $file );
    break;
    case IMAGETYPE_JPEG:
    imagejpeg( $image, $file );
    break;
    }
    return $meta;
    }

  3. So di essere un po' in ritardo nella discussione, ma ho appena avuto lo stesso problema con un errore (che altri segnalano):

    imagefilter() si aspetta il parametro 1 come risorsa, stringa data

    Questo accade quando si tenta di caricare un'immagine tramite la modale multimediale durante la modifica di un post, più vecchio del mese corrente, il che apparentemente confonde WordPress sulla directory in cui si trova l'immagine originale e in quale directory dovrebbe salvare l'immagine in scala di grigi.

    Questa è la soluzione:


    <?php
    add_filter('wp_generate_attachment_metadata','themename_bw_filter');
    function themename_bw_filter($meta) {
    $time = substr( $meta['file'], 0, 7); // <- ottiene l'ora corretta del caricamento
    $file = wp_upload_dir( $time ); // <- individua la directory di caricamento corretta
    $file = trailingslashit($file['path']).$meta['sizes']['themename-bw-image']['file'];
    list($orig_w, $orig_h, $orig_type) = @getimagesize($file);
    $image = wp_load_image($file);
    imagefilter($image, IMG_FILTER_GRAYSCALE);
    switch ($orig_type) {
    case IMAGETYPE_GIF:
    imagegif( $image, $file );
    break;
    case IMAGETYPE_PNG:
    imagepng( $image, $file );
    break;
    case IMAGETYPE_JPEG:
    imagejpeg( $image, $file );
    break;
    }
    return $meta;
    }

    • @geertvdheide

      Se volessi aggiungere il supporto per più dimensioni, prova quello che uso io:

      if ( function_exists( ‘add_theme_support’ ) ){

      add_theme_support( ‘post-thumbnails’ );

      set_post_thumbnail_size( 50, 50, true );

      add_image_size( ‘medium-thumb’, 660, ”, true );

      add_image_size( ‘large-thumb’, 960, ”, true );

      add_image_size( ‘small-thumb’, 100, ”, true );

      }

      (L'altezza non è definita, solo la larghezza.)

      dovresti aggiungere i diversi nomi per far sì che la funzione si applichi a tutti:

      [‘medium-thumb’ , ‘large-thumb’ , ‘small-thumb’] nel codice del filtro.

      Chiamare la miniatura nel tuo tema è lo stesso indicato nell'articolo:

  4. Grazie per aver condiviso questo codice! Tranne che sto riscontrando un problema strano quando cerco di implementarlo. È correlato alla dimensione dell'immagine caricata (dimensione in pixel, cioè le sue dimensioni). Ho copiato il codice letteralmente nel functions.php del mio tema, e funziona a meraviglia con immagini più grandi della dimensione specificata nella chiamata add_image_size. Ma quando uso un'immagine più piccola o uguale alla dimensione specificata, l'uploader di WordPress mi dà errori e non elabora la dimensione dell'immagine (sia dalla sezione media dell'ambiente admin, sia da un post o pagina specifica). L'errore:

    Warning: imagefilter() expects parameter 1 to be resource, string given.

    Altre cose nell'errore, ma questa sembra essere la causa principale. I dati dell'immagine forniti alla funzione imagefilter non sono validi o non esistono?

    Hai qualche idea su cosa stia causando questo? L'unica vera differenza tra la mia situazione e un'installazione pulita è che ho anche aggiunto alcune altre chiamate add_image_size per altri scopi nel mio sito. Sto anche aggiungendo la stessa dimensione due volte (una in bianco e nero, una normale), ma questo non sembra essere un problema con le immagini più grandi.

    • @GEERTVDHEIDE

      e per altri che ne hanno bisogno:

      Quando lo script sta convertendo l'immagine in scala di grigi e il file caricato non rientra nella dimensione del file, questo causa l'interruzione dello script. Per evitarlo, aggiungi semplicemente una rapida condizione if() per assicurarti di avere $file.

      $file = trailingslashit($file[‘path’]).$meta[‘sizes’][‘themename-bw-image’][‘file’];
      if( $file ) {
      list($orig_w, $orig_h, $orig_type) = @getimagesize($file);
      ——– remainder of code until ——–
      return $meta;
      }

      Questo verificherà che la dimensione del file richiesta esista prima di tentare di convertirla.

      Speriamo che questo aiuti!

  5. @Otto42 thank you! I had a bit of a hard time, actually and had to undoe it :( will pick it up tomorrow. It’s a good way to mix it up onsite

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra politica sui commenti, e il tuo indirizzo email NON verrà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.