Comment exiger une dimension d'image minimale pour le téléchargement?

16

J'ai besoin d'un moyen d'empêcher les auteurs de télécharger des images sous des dimensions spécifiques.

Dites que je souhaite uniquement autoriser le téléchargement d'images d'au moins 400 pixels x 400 pixels. Si la taille de l'image est plus petite, l'auteur devrait recevoir une erreur indiquant que l'image est trop petite.

Existe-t-il un plugin ou un code capable de réaliser cela?

    
posée boruchsiper 13.09.2011 - 04:10

2 réponses

24

Ajoutez ce code au fichier functions.php de votre thème pour limiter les dimensions d'image minimales

.
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; 
}

Modifiez simplement les nombres des dimensions minimales souhaitées (dans mon exemple, 640 et 480)

    
réponse donnée Maor Barazany 13.09.2011 - 16:48
10

Je préfère ne pas reformater le code d'un collègue.
Donc, c'est presque la même réponse que celle de @ MaorBarazany, mais en vérifiant le type mime, en modifiant la déclaration file['error'] et en modifiant l'espace de noms de la fonction en cet identifiant de question wpse.

De plus, la vérification est uniquement effectuée pour les utilisateurs qui sont pas des administrateurs .

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;
}

Résultat du crochet:

  

    
réponse donnée brasofilo 26.11.2012 - 04:03

Lire d'autres questions sur les étiquettes