Image Validator Rules For Laravel 5
Extra Laravel validation rules for dealing with images., (*1)
, (*2)
, (*3)
Installation
Install the package through Composer., (*4)
composer require "cviebrock/image-validator:2.0.*@beta"
Note: Version 2.0 of this package is designed to work with Laravel 5. If you are using Laravel 4, then checkout the 1.x branch and use the latest version there., (*5)
Add the following to your providers array in app/config/app.php:, (*6)
'providers' => array(
'Cviebrock\ImageValidator\ImageValidatorServiceProvider',
),
, (*7)
Usage
image_size
Use it like any Validator rule:, (*8)
$rules = array(
'my_image_field' => 'image_size:<width>[,<height>]',
);
The values for width and _height can be integers, or integers with a modifier prefix:, (*9)
-
300 or =300 means the dimension must be exactly 300 pixels.
-
<300 means the dimension must be less than 300 pixels
-
<=300 means the dimension must be less than or equal to 300 pixels
-
>300 means the dimension must be greater than 300 pixels
-
>=300 means the dimension must be greater than or equal to 300 pixels
-
200-300 means the dimension must be betweem 200 and 300 pixels (inclusive)
-
* means the dimension can be any value
If you only pass one value, it's assumed to apply to both dimensions (i.e. a square image with the given dimensions)., (*10)
image_aspect
$rules = array(
'my_image_field' => 'image_aspect:<ratio>',
);
The value for ratio represents width ÷ height and be either a decimal or two values (width, height; both integers):, (*11)
The value (or first value, if providing height and width) can also be prefixed with a tilde ~ character,
in which case the orientation doesn't matter:, (*12)
-
~3,4 means the image can have an aspect ratio of either 3:4 or 4:3.
Note that you may run into issues with floating point rounding., (*13)
, (*14)
Examples
// logo must be 300px wide by 400px tall
$rules = array(
'logo' => 'required|image|image_size:300,400',
);
// logo must be less than or equal to 300x300px.
$rules = array(
'logo' => 'required|image|image_size:<=300',
);
// logo must be 300px wide but can be any height
$rules = array(
'logo' => 'required|image|image_size:300,*',
);
// logo must be at least 100px tall and 200-300 pixels wide (inclusive)
$rules = array(
'logo' => 'required|image|image_size:>=100,200-300',
);
// logo must be square
$rules = array(
'logo' => 'required|image|image_aspect:1',
);
// logo must be ready for the big screen TV :)
$rules = array(
'logo' => 'required|image|image_aspect:16:9',
);
, (*15)
Bugs, Suggestions and Contributions
Please use Github for bugs, comments, suggestions., (*16)
- Fork the project.
- Create your bugfix/feature branch and write your code.
- Create unit tests for your code:
- Run
composer install --dev in the root directory to install required testing packages.
- Add your test methods to
tests/ (either adding to an existing test file, or creating a new one).
- Run
vendor/bin/phpunit to confirm the new (and all previous) tests pass.
- Commit your changes (and your tests) and push to your branch.
- Create a new pull request against the imagesize-validator
master branch.
Please note that you must create your pull request against the master branch. If you have a fix for the Laravel 4 version of the package, make your pull request against the 1.x branch., (*17)
, (*18)
Copyright and License
Eloquent-Sluggable was written by Colin Viebrock and released under the MIT License. See the LICENSE file for details., (*19)
Copyright 2013 Colin Viebrock, (*20)
Thanks
Lots of thanks to https://bitbucket.org/hampel/validate-laravel for the structure of creating a package to add validator rules to Laravel, and setting up useful unit tests., (*21)