如何要求最小图像尺寸才能上传?


17

我需要一种方法来限制作者上传特定尺寸以下的图片。

假设我只想允许上传至少400px x 400px的图像。如果图像尺寸较小,则作者应收到错误提示,即图像尺寸过小。

有没有可以完成此操作的插件或代码?

Answers:


25

将此代码添加到主题的functions.php文件中,它将限制最小图像尺寸

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

然后只需更改所需的最小尺寸的数字即可(在我的示例中为640和480)


谢谢!如果我们包含帖子缩略图,有什么方法可以不运行此功能吗?
Arthur Dos Santos Dias 2012年

每次上载文件时都会运行一次,在将文件分类或将其分配为缩略图之前,该步骤仍然只是文件。您可以基于文件名添加条件(带有您选择的前缀/后缀),并以此命名您的缩略图为文件,如果文件名满足该条件,则不要运行该功能。
Maor Barazany 2012年

第14行引用需要将“宽度”替换为“高度”,但是否则这正是我所需要的。

11

我不想重新格式化同事的代码。
因此,这几乎与@MaorBarazany的答案相同,但是要检查mime类型,更改file['error']声明并将函数名称空间更改为此wpse Question ID。

此外,仅对不是管理员的用户进行检查。

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

挂钩的结果:

阻止图片上传


喜欢这个,它就像一个魅力。但是,有一个问题:如果我只想在某些帖子类型上应用此过滤器,则用户仍然可以从媒体库中选择一张图片,该图片是以另一种不符合这些要求的帖子类型(没有大小要求)上传的。
cfx

只有在我们上传特色图片时,才可以应用此方法吗?
死锁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.