Fiddling around con Intervention 2.0 in Laravel 5. Quello che voglio è manipolare le immagini (dimensione e ritaglio) e utilizzare gli Interventi Image Caching per memorizzare le immagini nella cache. Quello che sostanzialmente cerco di ottenere è la funzionalità del buon vecchio (e insicuro) timthumb.php.Laravel 5 image-intervention/intervention-cache: url/routing flessibile
ho iniziato ad usare questo come esempio:
// routes.php
Route::get('imager/{src?}', function ($src)
{
$cacheimage = Image::cache(function($image) use ($src) {
return $image->make("files/image/".$src)->resize(100,50);
}, 10, true);
return Response::make($cacheimage, 200, array('Content-Type' => 'image/jpeg'));
});
Quando carico un'immagine in questo modo:
// template
<img src="{{"imager/image.jpg"}}"/>
Funziona benissimo.
Ma ... Nella mia situazione le immagini possono trovarsi in diverse (sotto) directory, a volte in più livelli in profondità. Sono mantenuti nel mio CMS dai loro webmaster.
esempi:
- file/immagini/image.jpg
- file/immagini/intestazioni/image.jpg
- file/immagini/sfondo/colore/image.jpg
- img/common/logo.png
Questi URL immagine sono caricati da un record di tabella mysql.
Quando tale carica le immagini:
// template
<img src="{{"imager/files/images/image.jpg"}}"/>
Il percorso non funziona più. Dopo tutto, file, immagini e images.jpg sono tutti i segmenti url e la quantità di loro potrebbero differire.
L'immagine url (in grassetto) vanno maneggiati come una variabile:
percorso :: get ('imager/file/immagini/image.jpg', funzione ($ src = false)
Quindi dovrei essere in grado di passare fuori rotta i parametri di dimensionamento e ritaglio perché la lunghezza dell'immagine potrebbe variare. Suppongo di poter passare i parametri con una query come? W = 100 & h = 50 & c = true o qualcosa del genere ?
Aggiornamento
Quando uso un parametro di query per l'URL dell'immagine:
Route::get('imager', function()
{
$src = Input::get('src', 1);
$cacheimage = Image::cache(function($image) use ($src) {
return $image->make($src)->resize(100,100);
}, 1, false); // one minute cache expiry
return Response::make($cacheimage, 200, array('Content-Type' => 'image/jpeg'));
});
// template
<img src="{{"imager?src=files/images/image.jpg"}}"/>
Questo funziona.
Forse il modo migliore per risolvere questo problema è usare mod_rewrite (se sei su Apache) e fare qualcosa del tipo: RewriteRule^imager/([. *]) \. [Jpg | gif | png] $ imager? src = $ 1 –
Ho avuto questo problema anche con un vecchio progetto Laravel 4. Ho aggiunto tutti i percorsi e i sotto-percorsi alla sezione dei percorsi nel file di configurazione di imagecache. – ChainList