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

时间:2011-09-13 作者:boruchsiper

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

假设我只想允许上传至少400px x 400px的图像。如果图像尺寸较小,作者应该得到一个错误通知,即图像太小。

是否有插件或代码可以实现这一点?

2 个回复
最合适的回答,由SO网友:Maor Barazany 整理而成

将此代码添加到主题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)

SO网友:brasofilo

我不想重新格式化同事的代码file[\'error\'] 声明并将函数命名空间更改为此wpse问题ID。

此外,该检查仅针对以下用户进行not administrators.

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;
}
Result of the hook:

blocked image uploads

结束

相关推荐

Images don't show up

我刚刚安装了一个新的多站点安装。一切都像我一样工作,只是图像没有显示在任何子网站上。Any idea why the images don\'t show up?我正在共享Windows服务器(由Arvixe.com托管)中的IIS6上运行Wordpress 3.1.1。辅助站点位于子目录而不是子域中。主站点的图像与标题图像一样有效,但子站点中的图像不会显示。我知道这些图片在博客中出现时,正在正确上传。服务器上的dir文件夹。如果我这样导航它们,它们也会出现:http://www.example.com/