Recorte de miniaturas con add_image_size
Quiero que mis miniaturas en una página particular sean exactamente de 300px
× 100px
. Actualmente, las imágenes se reducen hasta alcanzar la marca de 300 píxeles o 100 píxeles. ¿Cómo puedo hacer que la imagen se recorte exactamente a 300 × 100 (preferiblemente sin distorsión de imagen)?
// functions.php:
if ( function_exists( 'add_image_size' ) ) add_theme_support( 'post-thumbnails' );
if ( function_exists( 'add_image_size' ) ) {
// Miniatura para posts
add_image_size( 'post-thumb', 620, 207, true );
// Miniatura para inicio
add_image_size( 'home-thumb', 220, 180, true );
// Miniatura para índice
add_image_size( 'index-thumb', 300, 100, true );
}
// index.php:
if ( has_post_thumbnail()) the_post_thumbnail('index-thumb');

Consulta la entrada del Codex sobre add_image_size()
:
<?php add_image_size( $name, $width, $height, $crop ); ?>
El parámetro $crop
es clave:
(booleano) (opcional) Recortar la imagen o no. False - Modo de recorte proporcional suave; True - Modo de recorte duro.
Por defecto: false
Es decir:
- False (por defecto): redimensionamiento de caja - (redimensiona la imagen respetando la dimensión restrictiva)
- True: recorte duro - recorta la imagen exactamente a las dimensiones especificadas
Por lo tanto, tu código debería funcionar:
// Añadir soporte para el Tema
add_theme_support( 'post-thumbnails' );
// Registrar tamaños de imagen personalizados
add_image_size( 'post-thumb', 620, 207, true );
add_image_size( 'home-thumb', 220, 180, true );
add_image_size( 'index-thumb', 300, 100, true );
Si encuentras que tus imágenes no se muestran correctamente, hay un par de cosas que verificar:
- Para imágenes añadidas antes de implementar estos tamaños personalizados, necesitarás regenerar las miniaturas para esas imágenes
- Los tamaños de imagen no se generarán para imágenes que no sean al menos tan grandes como las dimensiones especificadas para un tamaño dado. Por lo tanto, asegúrate de que tus imágenes sean al menos tan grandes como tu tamaño de recorte duro más grande. (Las imágenes redimensionadas por caja no tienen esta restricción y solo necesitan ser al menos tan grandes como la dimensión más pequeña del tamaño especificado.)

Echa un vistazo a este plugin
- Crea tamaños de imagen ilimitados (recortados y sin recortar)
- Añade los tamaños en el campo de selección de medios
- Incluye filtros CSS y animaciones
- Gestiona marcas de agua

El parámetro true realmente recorta la imagen, si lo estableces en false la imagen no se recortará, en su lugar se redimensionará.

¿te aseguraste de que tus imágenes son realmente más grandes que los tamaños que definiste como miniaturas? ¿y probaste eliminar las cláusulas "if"?

Probé con imágenes más grandes. El mismo resultado. Al eliminar las cláusulas if da un error.
