¿Cómo ampliar la miniatura de la publicación destacada?

11

La situación es esta: estoy usando el complemento de miniaturas de video para obtener y configurar automáticamente las miniaturas de youtube / vimeo como imagen destacada de la publicación. El problema es que los tamaños de miniatura predeterminados de youtube / vimeo son un poco más pequeños que el ancho del contenido principal de mi tema.

Entonces, lo que necesito es escalarlos. Si voy a la Biblioteca de medios, puedo editar cada imagen manualmente, luego establecer mi ancho exacto y WordPress lo escala a la perfección (no me importa que la calidad sea un poco peor). Entonces, ¿hay alguna manera de que WP lo haga automáticamente cada vez que se carga una imagen?

Este es el tamaño de mi imagen definida: el add_image_size('post-full', 688, 320, true);tamaño del pulgar Vimeo es 640x320.

evaqas
fuente
1
Aquí hay un complemento que escribí para mejorar las miniaturas, basado en la solución de levi y arreglos de jackrugile. wordpress.org/support/plugin/thumbnail-upscale
khromov

Respuestas:

20

Puede usar la función nativa de Wordpress image_resize para ampliar las imágenes. Wordpress proporciona un enlace llamado " image_resize_dimensions " que puede usar para sobrescribir la configuración de recorte predeterminada. Aquí hay una función modificada que admitirá la ampliación:

function image_crop_dimensions($default, $orig_w, $orig_h, $new_w, $new_h, $crop){
    if ( !$crop ) return null; // let the wordpress default function handle this

    $aspect_ratio = $orig_w / $orig_h;
    $size_ratio = max($new_w / $orig_w, $new_h / $orig_h);

    $crop_w = round($new_w / $size_ratio);
    $crop_h = round($new_h / $size_ratio);

    $s_x = floor( ($orig_w - $crop_w) / 2 );
    $s_y = floor( ($orig_h - $crop_h) / 2 );

    return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );
}

Ahora conecte esta función así:

add_filter('image_resize_dimensions', 'image_crop_dimensions', 10, 6);

Una vez hecho esto, puede usar la función image_resize para escalar imágenes hacia arriba o hacia abajo según sea necesario.

$cropped_image = image_resize($image_filepath, $width, $height, true);
levi
fuente
Sin embargo, estoy usando este método cuando intento generar la imagen recortada y aparece el error: Error al guardar el editor de imágenes: ¿alguna idea?
Felix Eve
Todavía funciona muy bien en julio de 2015 con Wordpress 4.1.5. Exactamente lo que necesitaba para garantizar imágenes pequeñas ampliadas para las imágenes destacadas de mis publicaciones.
Mark Rummel
Para aquellos que buscan admitir la opción de posición de recorte, agregue el siguiente código justo antes del regreso de la función: if( is_array( $crop ) ) { if( $crop[ 0 ] === 'left' ) { $s_x = 0; } else if( $crop[ 0 ] === 'right' ) { $s_x = $orig_w - $crop_w;} if( $crop[ 1 ] === 'top' ) { $s_y = 0; } else if( $crop[ 1 ] === 'bottom' ) { $s_y = $orig_h - $crop_h; } }
jackrugile
Todavía funciona muy bien en abril de 2019 con Wordpress 5.1.1. Lo uso para forzar imágenes exclusivas que son más pequeñas de lo que deseaba add_image_size. Junto con el complemento Regenerar miniaturas.
Mtxz
¿Cómo hacer que funcione con la add_image_sizefunción?
Gediminas
0

la forma más fácil sería agregar un tamaño de imagen con 640x298 y usar css para cambiar su tamaño. Como es solo una escala menor, la escala del navegador debería funcionar bastante bien.

desafortunadamente, todos los complementos que conozco no proporcionan escalado de imagen, solo generan los tamaños de imagen más pequeños, por lo que si desea tener el 688x320 en su servidor, debería editar uno de los complementos existentes.

Si tiene instalado Imagick, puede modificar su complemento en el archivo video-thumbnails.php en la línea 325, generando una versión más grande de la miniatura, usando este código:

$image_big = new Imagick();
$image_big->setOption('jpeg:size', '688x344');
$image_big->readImage($new_thumbnail);

$upload = wp_upload_bits( basename( $new_thumbnail ), null, $image_big );

y deja que wordpress genere la miniatura más pequeña (cortando la altura). ¡Asegúrese de hacer diferentes tamaños de imágenes para las diferentes plataformas de video en su código Imagick!

fischi
fuente
Creo que iré con la solución CSS en este momento, es realmente la forma más fácil / rápida de resolver mi situación. También revisé los archivos principales de WP y parece que la función de cambio de tamaño usa min (); para determinar el ancho / alto mínimo y no hay ganchos para modificar eso, por lo que no aumentará mis imágenes al subirlas.
evaqas
Hay un gancho que puede usar llamado "image_resize_dimensions" que le permitirá reescribir la función sin min ().
levi