Systém CrudAdmin plne automatizoval nahrávanie súborov a obrázkov do administrácie. Veľa krát je ako ďalší krok potrebné tieto obrázky zmenšovať. K tomu rozšírenie sprístupnilo jednoduchú nadstavbu, pomocou ktoréj je práca s obrázkami a súbormi jednoduchšia ako nikdý pred tým.
- Nahravanie súboru, obrázku
- Výber súboru z modelu
- Orezávanie a práca s obrázkom
- Zložitejšie úkony s obrázkami
- Ďalšie pomocné funkcie
Pre jednoduché nahravanie súborov stačí v modely zadefinovať vstup súboru.
protected $fields = [
'image' => 'name:Obrázok|type:file|image'
];
Rozhranie následne automatický vygenerujé vstup pre nahrávanie súborov s patričnou validáciou, a zaobstará bezpečný prenos súboru až na server.
$article = Article::find(1);
$image = $article->image;
Premenná $image
obsahuje obrázok reprezentovaný triedou Admin\Helpers\File, ktorá sa postará v šablone o jednoduchý výpis a ďalšiu zjednodušenú prácu so súborom.
Trieda automatický pri výpise v šablone automatický vráti plnú cestu k súboru na servery.
<article>
<h2>{{ $article->image }}</h2>
<img src="{{ $article->image }}" alt="">
</article>
Výsledok v atribúte src
bude plná cestá k súboru https://example.com/uploads/.../my-uploaded-file.png
Trieda Admin\Helpers\File automatický poskytuje orez obrázkov, ktorý je možné vykonávať priamo v šablone.
K orezu obrázkov slúži metóda resize($width, $height)
, kde ako prvý parameter príjma šírku, a druhy výšku obrázku. Ak su definované oba parametre šírka a výška, bude sa obrázok orezávať v správnom pomere, ak je definovaná len jedna konštatna, obrázok ďalšiu veličinu dopočíta v správnom pomere.
<article>
<h2>{{ $article->image }}</h2>
<img src="{{ $article->image->resize(200, 100) }}" alt="">
</article>
!> Pri prvóm načítaní obrázku bude vykonaný orez súboru a jeho uloženie na server pre budúce požiadavky na tento orezaný súbor. O to všetko sa postará plne automatický system CrudAdmin.
Trieda Admin\Helpers\File využíva rozšírenie http://image.intervention.io/ , pomocou ktorého automatický dokáže robiť aj zložitejšie úkony s obrázkom, ktoré táto knižnica Intervention Image podporuje.
K funkciam rozšírenia Intervention Image je možné pristúpiť pomocou metódy image($mutators)
, pričom vstupný parameter tejto funkcie príjma pole s kľúčmi reprezentujúce názvy funkcií a jeho hodnoty ako parametre danej funkcie, ktoré sa maju nad obrázkom vykonať.
<article>
<h2>{{ $article->image }}</h2>
<img src="{{ $article->image->image([
'fit' => [200, 200],
'blur' => 10
]) }}" alt="">
</article>
!> V tejto funkcii bol použitý orez obrázku pomocou funkcie fit
a následne po orezaní obrázku bolo vykonané rozmazanie obrázku s funkciou blur
.
Orez obrázku - http://image.intervention.io/api/fit
Rozmazanie obrázku - http://image.intervention.io/api/blur
Pre zjednodušenú prácu so súbormi sú dostupné ďalšie funkcie.
delete()
- metóda sa postará o zmazanie súboru zo servera.
$row->image->delete();
download()
- metóda vracia odkaz k súboru na nútene stiahnutie súboru zo servera, v tomto prípade prehliadač automaticky ponukne stiahnutie súboru, namiesto jeho zobrazenia v prehliadači.
<a href="{{ $row->image->download() }}">Stiahnúť obrázok</a>
filesize()
- metóda vracia presnú veľkosť súboru súboru v merných jednotkách B/Kb/Mb/Gb, podľa veľkosti súboru.
Formatovaná veľkosť súboru je {{ $row->image->filesize() }}
// Formatovaná veľkosť súboru je 120 MB
Pre neformatovanú veľkosť súboru je možné použiť rovnaku funkciu s parametrom false
.
Neformatovaná veľkosť súboru je {{ $row->image->filesize(false) }}
// Neformatovaná veľkosť súboru je 120000000