如何在laravel中插入数据库之前验证图像尺寸

时间:2015-02-13 06:00:29

标签: validation laravel-4

Iam new in laravel .im试图验证图像的尺寸。我希望尺寸最小(宽度= 100,高度= 50)。使用controller.php中的验证码。  'galimg'=>'所需| MAX:200KB | DimensionMin(300300)|默剧:JPEG,JPG,GIF,PNG           ,pneg“
但DimensionMin(300,300)不起作用....我认为自定义验证规则是可能的..但我不知道如何使用它?在哪里?这是我的controller.php代码

public function getgallery()
  {
    $validate=Validator::make(Input::all(),array(
    'galname'=>'required|max:20',
     'galimg'=>'required|max:400kb|Dimensionmin(300,300)|Mimes:jpeg,jpg,gif,png
                     ,pneg'));
    if($validate->fails())
     {  return Redirect::route('getgallery')
        ->withErrors($validate)->withInput(); }
    else
    { $max_image = 3;
    if(ForumGallery::all()->count() < $max_image)
     {  $file=Input::file('galimg');
        $filename=$file->getClientOriginalName();
     $file->move('uploads',$filename);
     ForumGallery::create(['galname'=>Input::get('galname'),
           'galimg'=>$filename]);
     return Redirect::route('addgallery'); 
      }
    else
     {return Redirect::route('gallery')
      ->with('success','Max Image Upload Reached!');
     } }}

3 个答案:

答案 0 :(得分:0)

您可以使用此代码

function getImgSize(imgSrc) { var newImg = new Image();

newImg.onload = function() {
var height = newImg.height;
var width = newImg.width;
alert ('The image size is '+width+'*'+height);
}

newImg.src = imgSrc; // this must be done AFTER setting onload

}`

在这里,您可以获得图像的高度和宽度,将其与您所需的尺寸进行比较。

参考http://tiku.io/questions/4060613/how-to-validate-image-size-and-dimensions-before-saving-image-in-database

答案 1 :(得分:0)

$v = Validator::make($data, array(
    'email' => 'required|email',
    'games' => 'required|numeric',
));

假设您还有其他一些要验证的字段。把它们放在$ v。 现在您需要添加自定义验证规则。

$v->sometimes('galimg', 'required', function($input)
{
   //psudo code, here validate your image
   if($input.length >= 300) return false;
   return true;
});

将与图像相关的操作放入函数中。

希望这有帮助。

$validate=Validator::make(Input::all(),array(
'galname'=>'required|max:20',
 'galimg'=>'required|max:400kb|Mimes:jpeg,jpg,gif,png
                 ,pneg'));

$validate->sometimes('galimg', 'required', function($input)
{
   //psudo code, here validate your image
   return imagesx($input) > 300 && imagesy($input) > 300;
});

答案 2 :(得分:0)

您可以使用此强大的库来检测图像尺寸here

完成安装后,您可以在控制器中使用它,如下所示:

$validate=Validator::make(Input::all(),array(
  'galname'=>'required|max:20',
  'galimg'=>'required|mimes:jpeg,jpg,gif,png,pneg|image_size:1200,800'));

规则应为1200宽,800高或宽= 1200,高= 800

注意:尺寸以像素为单位 希望它有所帮助。