Ritaglio delle Thumbnail con add_image_size?
Voglio che le mie thumbnail in una pagina specifica siano esattamente di 300px
× 100px
. Attualmente, le immagini si rimpiccioliscono fino a raggiungere il limite di 300 pixel o 100 pixel. Come posso fare per ritagliare l'immagine esattamente a 300 × 100 (preferibilmente senza distorsione dell'immagine).
// functions.php:
if ( function_exists( 'add_image_size' ) ) add_theme_support( 'post-thumbnails' );
if ( function_exists( 'add_image_size' ) ) {
// Ritaglio thumbnail per i post
add_image_size( 'post-thumb', 620, 207, true );
// Ritaglio thumbnail per la home
add_image_size( 'home-thumb', 220, 180, true );
// Ritaglio thumbnail per l'indice
add_image_size( 'index-thumb', 300, 100, true );
}
// index.php:
if ( has_post_thumbnail()) the_post_thumbnail('index-thumb');

Fai riferimento alla voce del Codex per add_image_size()
:
<?php add_image_size( $name, $width, $height, $crop ); ?>
Il parametro $crop
è fondamentale:
(booleano) (opzionale) Ritagliare l'immagine o meno. False - Modalità di ritaglio proporzionale morbido; True - Modalità di ritaglio rigido.
Valore predefinito: false
Ovvero:
- False (predefinito): ridimensionamento a scatola - (ridimensiona l'immagine rispetto alla dimensione vincolante)
- True: ritaglio rigido - ritaglia l'immagine esattamente alle dimensioni specificate
Quindi il tuo codice dovrebbe funzionare così:
// Aggiungi supporto al Tema
add_theme_support( 'post-thumbnails' );
// Registra dimensioni personalizzate per le immagini
add_image_size( 'post-thumb', 620, 207, true );
add_image_size( 'home-thumb', 220, 180, true );
add_image_size( 'index-thumb', 300, 100, true );
Se noti che le tue immagini non vengono renderizzate/visualizzate correttamente, ci sono alcune cose da verificare:
- Per le immagini aggiunte prima dell'implementazione di queste dimensioni personalizzate, dovrai rigenerare le miniature per quelle immagini
- Le dimensioni delle immagini non verranno generate per immagini che non sono almeno grandi quanto le dimensioni specificate per una data misura. Pertanto, assicurati che le tue immagini siano almeno grandi quanto la misura di ritaglio rigido più grande specificata. (Le immagini ridimensionate a scatola sono meno vincolate e devono essere almeno grandi quanto la dimensione più piccola specificata per una data misura.)

Dai un'occhiata a questo plugin
- crea dimensioni illimitate per le immagini (ritagliate e non)
- aggiunge dimensioni nel campo di selezione dei media
- aggiunge filtri CSS e animazioni
- gestisce le filigrane

Il parametro true ritaglia effettivamente l'immagine, se lo imposti su false l'immagine non verrà ritagliata ma ridimensionata.

hai verificato che le tue immagini siano effettivamente più grandi delle dimensioni che hai definito come miniature? E hai provato a rimuovere le clausole "if"?

Ho provato con immagini più grandi. Stesso risultato. Rimuovendo le clausole if dà un errore.
