1. Go to this page and download the library: Download actengage/media 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/ */
actengage / media example snippets
use Actengage\Media\Facades\Resource;
use Illuminate\Http\UploadedFile;
// Create a resource from a path.
$resource = Resource::path('some/file/path/image.jpeg');
// Create a resource from request() instance.
$resource = Resource::request('image');
// Create a resource from an \Illuminate\Http\UploadedFile instance.
$resource = Resource::make(
new UploadedFile('some/file/path/image.jpeg', 'image.jpeg')
);
use Actengage\Media\Facades\Resource;
// Chain methods on the Resource facade to build the resource.
// This will save the resource to the `public` disk in the `images`
// directory. This resource is assumed to be an image and will be
// filtered using `greyscale()`.
$resource = Resource::request('image')
->disk('public')
->directory('images')
->filename('renamed.jpeg')
->title('Hello World!')
->caption('This is my first resource.')
->greyscale();
// Save the resource to the disk and return the `Media` model.
$media = $resource->save();
use Actengage\Media\Facades\Resource;
use Actengage\Media\Resources\Image;
$resource = Resource::request('image')
// When the resource is an image, make it greyscale.
->is('image', function($resource) {
$resource->greyscale();
})
// You may also use the literal class as a match...
->is(Image::class, function($resource) {
$resource->greyscale();
})
// When the resource is a file, do something else...
->is('file', function($resource) {
// Do something here...
});
use Actengage\Media\Facades\Resource;
use Actengage\Media\Resources\Image;
$resource = Resource::request('image')
// When the value is `true` execute the callback.
->when(true, function($resource) {
// This will only be called when `true` is passed to the first argument.
})
// You may also use a callback to check for a `true` value.
->when(function($resource) {
return true;
}, function($resource) {
// This will only be called when `true` is returned from the first callback.
})
// When the value is `false` execute the callback.
->not(false, function($resource) {
// This will only be called when `false` is passed to the first argument.
})
// You may also use a callback to check for a `false` value.
->not(function($resource) {
return false;
}, function($resource) {
// This will only be called when `false` is returned from the first callback.
});
## Resource Context, Meta, Tags
Contextual data can be used to search and filter `Media` models.
use Actengage\Resources\Image;
Image::creating(function($resource, $model) {
// This method is fired for the every Image resource before it
// has been saved, similar to the `creating` Eloquent event.
});
Image::created(function($resource, $model) {
// This method is fired for the every Image resource after it
// has been saved, similar to the `creating` Eloquent event.
});
$resource = Resource::request('image')
->creating(function($resource, $model) {
// This method is fired for the resource instance before it
// has been saved, similar to the `creating` Eloquent event.
})
->created(function($resource, $model) {
// This method is fired for the resource instance after it
// has been saved, similar to the `created` Eloquent event.
});
use Actengage\Media\Media;
// Search by one or more captions
Media::caption('Some Caption');
Media::caption('Some Caption', 'Another Caption');
Media::caption(['Some Caption', 'Another Caption']);
// Search by one or more contexts
Media::context('Some Context');
Media::context('Some Context', 'Another Context');
Media::context(['Some Context', 'Another Context']);
// Search by one or more disks
Media::disk('public');
Media::disk('public', 's3');
Media::disk(['public', 's3']);
// Search by one or more extensions
Media::extension('jpeg');
Media::extension('jpeg', 'jpg');
Media::extension(['jpeg', 'jpg']);
// Search by one or more filenames
Media::filename('a.jpeg');
Media::filename('a.jpeg', 'b.jpeg');
Media::filename(['a.jpeg', 'b.jpeg']);
// Search by one or more filesizes
Media::filesize(2500);
Media::filesize(2500, 3500);
Media::filesize([2500, 3500]);
// Search by meta key/values
Media::meta([
'a' => 1,
'b' => 2,
'c' => 3
]);
// Search by one or more mime types
Media::mime('text/plain');
Media::mime('text/plain', 'text/html');
Media::mime(['text/plain', 'text/html']);
// Search by one or more tags
Media::tag('a');
Media::tag('a', 'b');
Media::tag(['a', 'b', 'c']);
// Alias to tag() is tags()
Media::tags('a', 'b');
// Search by one or more titles
Media::title('Some Title');
Media::title('Some Title', 'Another Title');
Media::title(['Some Title', 'Another Title']);
// Search records without one or more tags
Media::withoutTag('a');
Media::withoutTag('a', 'b');
Media::withoutTag(['a', 'b', 'c']);
// Alias to withoutTag() is withoutTags()
Media::withoutTags('a', 'b');
namespace App;
use Actengage\Media\Mediable;
use Illuminate\Database\Eloquent\Model;
class Document extends Model
{
use Mediable;
}
// Create a new `Media` model using the `request()` instance.
$media = Resource::request('image')
->disk('public')
->save();
// Create a new Document
$document = new Document();
$document->content = 'Hello World!';
$document->save();
// Sync the model to the document
$document->media()->sync($media);
// Many to Many usage
dd($document->media);
// One to Many usage. This method will give the last `Media` model
// associated with the document model. This method is for convenience.
dd($document->medium);
use Actengage\Media\Resources\Image;
// These plugins will only fire on Image resources.
Image::plugins([
// This is a plugin without any options defined.
HashFilename::class,
// This is a plugin with options defined.
[ExtractImageColors::class, [
'colorCount' => 3,
'quality' => 10
]],
]);
use Actengage\Media\Media;
use Actengage\Media\Plugins\ExtractImageColors;
use Actengage\Media\Plugins\HashDirectory;
use Actengage\Media\Plugins\HashFilename;
use Actengage\Media\Resources\File;
use Actengage\Media\Resources\Image;
return [
// Resources are defined in key/value pairs. The key is the common name
// and the value is the class. Plugins are matched to their common name.
'resources' => [
'image' => Image::class,
'file' => File::class
],
'plugins' => [
// This plugins will apply to all resources and has no options.
HashFilename::class,
// These plugins will only apply to image resources
'image' => [
// This plugin has some options
[ExtractImageColors::class, [
'colorCount' => 3,
'quality' => 10
]],
],
// These plugins will only apply to file resources
'file' => [
HashDirectory::class
]
]
];
namespace Actengage\Media\Plugins;
use Actengage\Media\Media;
use Actengage\Media\Resources\Image;
use ColorThief\ColorThief;
use Illuminate\Support\Collection;
class ExtractImageColors extends Plugin {
/**
* Boot the plugin.
*
* @param Collection $options
* @return void
*/
public static function boot(Collection $options): void
{
/**
* Get the color palette of the image.
*
* @param integer $colorCount
* @param integer $quality
* @param array|null $area
* @param string $outputFormat
* @param \ColorThief\Image\Adapter\AdapterInterface|string|null $adapter
* @return \Illuminate\Support\Collection
*/
Image::macro('palette', function(
int $colorCount = 10,
int $quality = 10,
?array $area = null,
string $outputFormat = 'obj',
$adapter = null
): Collection {
return collect(ColorThief::getPalette(
$this->image->getCore(),
$colorCount,
$quality,
$area,
$outputFormat,
$adapter
));
});
Image::creating(function(Image $resource, Media $model) use ($options) {
$model->colors = $resource->palette(
(int) $options->get('colorCount', 10),
(int) $options->get('quality', 10)
);
});
}
}
php artisan vendor:publish --tag=config
php artisan vendor:publish --tag=config
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.