¿Cómo requerir una dimensión mínima de imagen para la carga?

13 sept 2011, 05:10:29
Vistas: 27.3K
Votos: 18

Necesito una manera de restringir que los autores suban imágenes por debajo de dimensiones específicas.

Digamos que solo quiero permitir la carga de imágenes que tengan al menos 400px x 400px. Si el tamaño de la imagen es más pequeño, el autor debería recibir un aviso de error indicando que la imagen es demasiado pequeña.

¿Existe algún plugin o código que pueda lograr esto?

0
Todas las respuestas a la pregunta 2
4
27

Agrega este código al archivo functions.php de tu tema, y limitará las dimensiones mínimas de las imágenes

add_filter('wp_handle_upload_prefilter','tc_handle_upload_prefilter');
function tc_handle_upload_prefilter($file)
{

    $img=getimagesize($file['tmp_name']);
    $minimum = array('width' => '640', 'height' => '480');
    $width= $img[0];
    $height =$img[1];

    if ($width < $minimum['width'] )
        return array("error"=>"Las dimensiones de la imagen son demasiado pequeñas. El ancho mínimo es {$minimum['width']}px. El ancho de la imagen subida es $width px");

    elseif ($height <  $minimum['height'])
        return array("error"=>"Las dimensiones de la imagen son demasiado pequeñas. El alto mínimo es {$minimum['height']}px. El alto de la imagen subida es $height px");
    else
        return $file; 
}

Luego solo cambia los números de las dimensiones mínimas que desees (en mi ejemplo son 640 y 480)

13 sept 2011 17:48:24
Comentarios

¡Gracias! ¿Hay alguna manera de NO ejecutar esta función si estamos incluyendo una miniatura de publicación?

Arthur Dos Santos Dias Arthur Dos Santos Dias
24 ene 2012 13:34:06

Esto se ejecuta cada vez que cargas un archivo, en el paso cuando todavía es solo un archivo, antes de categorizarlo o asignarlo como miniatura. Puedes agregar una condición basada en el nombre del archivo con un prefijo/sufijo de tu elección, y nombrar tus archivos de miniaturas según esto, luego no ejecutar la función si el nombre del archivo cumple esa condición.

Maor Barazany Maor Barazany
22 feb 2012 01:38:59

En la línea 14 las referencias necesitan tener "width" reemplazado por "height" pero por lo demás esto era exactamente lo que necesitaba.

User User
26 abr 2012 20:36:55

¡Funciona maravillosamente bien con Gutenberg!

Jules Jules
1 abr 2020 17:00:28
2
12

Prefiero no reformatear el código de un colega.
Así que, esta es casi la misma respuesta que la de @MaorBarazany, pero verificando el tipo mime, cambiando la declaración de file['error'] y modificando el namespace de la función para esta pregunta de wpse.

Además, la verificación solo ocurre para usuarios que no son administradores.

add_action( 'admin_init', 'wpse_28359_block_authors_from_uploading_small_images' );

function wpse_28359_block_authors_from_uploading_small_images()
{
    if( !current_user_can( 'administrator') )
        add_filter( 'wp_handle_upload_prefilter', 'wpse_28359_block_small_images_upload' ); 
}

function wpse_28359_block_small_images_upload( $file )
{
    // Tipo MIME con dimensiones, verificación para salir antes
    $mimes = array( 'image/jpeg', 'image/png', 'image/gif' );

    if( !in_array( $file['type'], $mimes ) )
        return $file;

    $img = getimagesize( $file['tmp_name'] );
    $minimum = array( 'width' => 640, 'height' => 480 );

    if ( $img[0] < $minimum['width'] )
        $file['error'] = 
            'Imagen demasiado pequeña. El ancho mínimo es ' 
            . $minimum['width'] 
            . 'px. El ancho de la imagen subida es ' 
            . $img[0] . 'px';

    elseif ( $img[1] < $minimum['height'] )
        $file['error'] = 
            'Imagen demasiado pequeña. La altura mínima es ' 
            . $minimum['height'] 
            . 'px. La altura de la imagen subida es ' 
            . $img[1] . 'px';

    return $file;
}

Resultado del hook:

subida de imágenes bloqueada

26 nov 2012 05:03:55
Comentarios

Me encanta esto y funciona perfectamente. Sin embargo, hay un problema: si quiero aplicar este filtro solo en ciertos tipos de publicación, los usuarios aún pueden elegir una imagen de la Biblioteca Multimedia que fue subida en otro tipo de publicación (sin los requisitos de tamaño) que no cumple con estos requisitos.

cfx cfx
16 may 2014 04:32:12

¿Hay alguna manera de aplicar esto solo si estamos subiendo una imagen destacada?

deathlock deathlock
14 oct 2016 12:11:50