¿Cómo solicitar una dimensión de imagen mínima para cargar?

16

Necesito una forma de impedir que los autores carguen una imagen debajo de dimensiones específicas.

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

¿Hay algún complemento o código que pueda lograr esto?

    
pregunta boruchsiper 13.09.2011 - 04:10

2 respuestas

24

Agregue este código al archivo functions.php de su tema, y limitará las dimensiones mínimas de la imagen

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"=>"Image dimensions are too small. Minimum width is {$minimum['width']}px. Uploaded image width is $width px");

    elseif ($height <  $minimum['height'])
        return array("error"=>"Image dimensions are too small. Minimum height is {$minimum['height']}px. Uploaded image height is $height px");
    else
        return $file; 
}

Luego, simplemente cambie los números de las dimensiones mínimas que desea (en mi ejemplo son 640 y 480)

    
respondido por el Maor Barazany 13.09.2011 - 16:48
10

Prefiero no reformatear el código de un colega.
Entonces, esta es casi la misma respuesta que la de @ MaorBarazany, pero verificando el tipo mime, cambiando la declaración file['error'] y cambiando el espacio de nombres de la función a esta ID de pregunta wpse.

Además, la comprobación solo se produce para los usuarios que son no 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 )
{
    // Mime type with dimensions, check to exit earlier
    $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'] = 
            'Image too small. Minimum width is ' 
            . $minimum['width'] 
            . 'px. Uploaded image width is ' 
            . $img[0] . 'px';

    elseif ( $img[1] < $minimum['height'] )
        $file['error'] = 
            'Image too small. Minimum height is ' 
            . $minimum['height'] 
            . 'px. Uploaded image height is ' 
            . $img[1] . 'px';

    return $file;
}

Resultado del gancho:

  

    
respondido por el brasofilo 26.11.2012 - 04:03

Lea otras preguntas en las etiquetas