PHP code example of igaster / laravel-image-versions
1. Go to this page and download the library: Download igaster/laravel-image-versions library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
igaster / laravel-image-versions example snippets
class Photo extends Eloquent {
use \igaster\imageVersions\ImageVersionsTrait;
//...
}
class Photo extends Eloquent {
public function relativePath(){ // No starting or trailing slashes
return 'Photos\'.$this->filename; // example output: "Photos\image1.jpg"
}
}
use Intervention\Image\Image;
class v200x200 extends \igaster\imageVersions\AbstractTransformation{
public function apply(Image $image){
// Perform here any operations on the $image object, eg:
$image->crop(200, 200);
}
}
$photo = Photo::find(1) // Photo can be any Eloquent model in your application
$thumb = $photo->version(v200x200::class); // Get the `v200x200' version of your $photo
$thumb->url() // the url to your image (eg /Photos/v200x200/filename.jpg)
$thumb->relativePath() // path relative to public (eg Photos/v200x200/filename.jpg)
$thumb->absolutePath() // absolute path (valid only on local filesystem). You can perform file operations on it
public function apply(Image $image, $width, $height){
$image->cropImage($width, $height, 0, 0);
}
'versions' => [
/*
| Set the disk that you want to use. Can be any disk defined in 'filesystems.php'
| Leave null to default to your public folder.
*/
'disk' => 's3',
/*
| You can set here the endpoind of you filesystem. This will be used to get a url() for your
| images. Leave null if you are saving localy
*/
'root_url' => 'my_bucket.s3-website-eu-west-1.amazonaws.com',
]
'versions' => [
/*
| This is the namespace of your Transformation classes. If you define this then
| you can either use the full transformation's class name, or the short class name
| when you are calling the version() method. Default: null
*/
'namespace' => Namespace\Of\Transformations\Classes,
]
$photo = Photo::find(1);
// The following are equivalent:
$thumb = $photo->version(Namespace\Of\Transformations\Classes\v200x200::class);
$thumb = $photo->version('v200x200');
class v200x200 extends \igaster\imageVersions\AbstractTransformation{
/**
* This callback is executed before the image is saved. You can override this
* if you want to prepere the image for saving (eg set file format etc).
*
* @param \Intervention\Image\Image $image
* @return null
*/
public function onSaving(\Intervention\Image\Image $image){
$image->encode('jpg', 75);
}
/**
* This callback is executed when the image is sucessfuly saved.
* It receives the decorated (Version) Eloquent model that encapsulates the Image.
* You can perform any post-save actions here (eg update your db / fire events etc)
*
* @param Version $version (Your original Eloquent model decorated)
* @return null
*/
public function onSaved(Version $image){
/* examples:
$image->id; // Access your original Eloquent model's attributes/methods
$image->url(); // created image's url
$image->relativePath(); // created image's relative path
$image->absolutePath(); // created image's absolute (valid only on local filesystem)
*/
}
}
$thumb = $photo->beforeTransformation(function(\Intervention\Image\Image $image, $width, $height){
$image->crop($width, $height, 0, 0);
}, 200, 200)->version(vGrayscale::class); // Now the crop size is not hardcoded!
// Decorator pattern applied.
// You can call any method of your Photo Eloquent model. Example:
$thumb->user_id; // Get, Set an Eloquent attribute
$thumb->update(['key' => 'value']); // Call any Eloquent's methods
$thumb->myMehod(); // Call methods that you have defined in the Photo class
$thumb->object; // Instance of the original Photo object
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.