2012-02-26 16 views
10
$image_p = imagecreatetruecolor($new_width, $new_height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

Come posso salvare l'immagine ridimensionata nella cartella /? E come posso rilevare che il tipo di immagine è jpg/png/gif?PHP Salva immagine Dopo imagecopyresampled

risposta

12

Per salvare l'immagine in un file, è possibile utilizzare uno di questi: imagejpeg(), imagepng() o imagegif(), a seconda del formato di output desiderato.

Per rilevare il tipo di immagine, è sufficiente controllare l'estensione del file e basarsi su di esso. Tuttavia, a volte le persone cambiano manualmente l'estensione di un file immagine, pensando che in realtà cambi il tipo di immagine, quindi è sempre una buona idea controllare se imagecreate ha restituito una risorsa immagine anziché falsa.

di un modo rapido per tornare solo l'estensione di un file:

$ext = pathinfo($path_to_file, PATHINFO_EXTENSION); 

Manual entry on pathinfo()

4

aggiungere questo codice

imagepng($iOut,'pic/mypic.png',3); 

& questo codice per ottenere il formato di foto da un server esterno

$link='http://example.com/example.png'; 
echo (substr ($link,strrpos ($link,".")+1)); 
1
$filename = 'path/to/original/file.xxx'; // where xxx is file type (jpg, gif, or png) 
$newfilename = 'path/to/resized/file.xxx'; // where xxx is file type (jpg, gif, or png) 
$path_parts = pathinfo($filename); 
if ($path_parts['extension'] == 'jpg') { 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefromjpeg($filename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagejpeg($image_p, $newfilename); 
} elseif ($path_parts['extension'] == 'gif') { 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefromgif($filename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagegif($image_p, $newfilename); 
} elseif ($path_parts['extension'] == 'png') { 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefrompng($filename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagepng($image_p, $newfilename); 
} else { 
     echo "Source file is not a supported image file type."; 
} 
+0

il suo bel lavoro problema solo la creazione di file PNG come file rigenerata devono essere trasparenti. Come può essere fatto. –

3

Dopo aver applicato imagecopyresampled(), il $dst_image sarà il vostro identificatore di risorsa immagine.

La semplice applicazione della funzione imagecopyresampled() non lo salva automaticamente nel file system.

Quindi sarà necessario salvarlo, utilizzando una delle funzioni imagejpeg(), imagepng()

// Output 
imagejpeg($dst_image, 'new-image.jpg', 100);