2014-11-12 10 views
9

voglio ridimensionare le mie immagini attraverso la funzionalità immagine Intervento in laravel 4, ma per mantenere le proporzioni di un'immagine, questo è ciò che il mio codice è simile:intervento proporzioni immagine

$image_make   = Image::make($main_picture->getRealPath())->fit('245', '245', function($constraint) { $constraint->aspectRatio(); })->save('images/articles/'.$gender.'/thumbnails/245x245/'.$picture_name); 

problema è che questo doesn 't mantenere le proporzioni della mia immagine, grazie.

+0

'fit()' dovrebbe mantenere il rapporto automaticamente. Quindi non c'è bisogno del vincolo. Ti suggerisco di passare anche l'altezza e la larghezza come numeri e non stringhe. Altrimenti non vedo nulla di sbagliato qui ... – lukasgeiter

+0

@lukasgeiter Intendevo ridimensionare() non mantiene proporzioni (mi dispiace), fit() mantiene le proporzioni ma taglia parti di un'immagine che sono importanti per me ... – sk4yb3n

+0

Quindi qual è esattamente il risultato atteso? se il rapporto non corrisponde al rapporto obiettivo? – lukasgeiter

risposta

15

Se è necessario ridimensionare all'interno dei vincoli, è necessario utilizzare resize non fit. Se hai bisogno anche centrare l'immagine all'interno dei vincoli, è necessario creare un nuovo canvas e inserire l'immagine ridimensionata all'interno di tale:

// This will generate an image with transparent background 
// If you need to have a background you can pass a third parameter (e.g: '#000000') 
$canvas = Image::canvas(245, 245); 

$image = Image::make($main_picture->getRealPath())->resize(245, 245, function($constraint) 
{ 
    $constraint->aspectRatio(); 
}); 

$canvas->insert($image, 'center'); 
$canvas->save('images/articles/'.$gender.'/thumbnails/245x245/'.$picture_name); 
+0

Bella risposta. Questo è esattamente ciò di cui avevo bisogno per mantenere tutte le mie miniature di dimensioni coerenti. Grazie! – Merlevede

8

Proprio Ridimensiona alla massima larghezza/altezza dell'immagine, e il rendere la misura di tela la larghezza massima & altezza desiderata

Image::make($main_picture->getRealPath())->resize(245, 245, 
    function ($constraint) { 
     $constraint->aspectRatio(); 
    }) 
->resizeCanvas(245, 245) 
->save('images/articles/'.$gender.'/thumbnails/245x245/'.$picture_name, 80); 
Problemi correlati