2012-08-31 6 views
5

Ho un po 'di anteprima prodotto immagini, ma non sono le stesse dimensioni.Imagecrop senza salvare l'immagine

Quindi mi chiedo, è possibile ritagliare un'immagine in movimento, senza salvarlo?

Questi due collegamenti dovrebbero mostrare cosa intendo:

http://xn--nstvedhandel-6cb.dk/alpha_1/?side=vis_annonce&id=12

http://xn--nstvedhandel-6cb.dk/alpha_1/?side=vis_annonce&id=13

+2

Sì, ma probabilmente * vuoi * salvarlo, perché le operazioni di ridimensionamento delle immagini sono molto costose e tu * non * vuoi doverle fare più e più volte ogni volta. – deceze

risposta

5

sì è possibile ecco come lo faccio:

//Your Image 
$imgSrc = "image.jpg"; 
list($width, $height) = getimagesize($imgSrc); 
$myImage = imagecreatefromjpeg($imgSrc); 

// calculating the part of the image thumbnail 
if ($width > $height) 
{ 
    $y = 0; 
    $x = ($width - $height)/2; 
    $smallestSide = $height; 
} 
else 
{ 
    $x = 0; 
    $y = ($height - $width)/2; 
    $smallestSide = $width; 
} 

// copying the part into thumbnail 
$thumbSize = 100; 
$thumb = imagecreatetruecolor($thumbSize, $thumbSize); 
imagecopyresampled($thumb, $myImage, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide); 

//final output 
header('Content-type: image/jpeg'); 
imagejpeg($thumb); 

Questa non è un'operazione di luce verry, come gli altri che vi raccomando anche di salvare la miniatura dopo averlo creato nel file system.

Si potrebbe desiderare di verificare PHP's GD library.

1

È certamente possibile, ma ciò che si vogliono fare, probabilmente non è una buona idea - ecco perché.

Se si ritaglia un'immagine, salvarla, si (non si usa il server) non è necessario ripetere l'operazione. Non è un'operazione leggera.

Tuttavia, se si continua a ritagliare al volo, il server dovrà eseguirlo ogni volta - cosa abbastanza inefficiente.

Come scenario peggiore, perché non ritagliare automaticamente una volta le dimensioni desiderate (anziché eseguire manualmente) e salvare semplicemente tali risultati?

Infine, dato che si tratta di un negozio, i ritagli manuali non darebbero ai tuoi prodotti le migliori immagini possibili e quindi la migliore possibilità di venderli?

2

Si potrebbe desiderare di provare questo semplice script: https://github.com/wes/phpimageresize

Permette anche per la cache, che dovrebbe aiutare con problemi di prestazioni.

Ma preferisco anche ridimensionare le immagini e salvarle come miniature.