2012-04-05 11 views
5

So cheCome leggere un'immagine con PHP?

$localfile = $_FILES['media']['tmp_name']; 

otterrà l'immagine dato che il metodo POST è stato utilizzato. Sto cercando di leggere un'immagine che si trova nella stessa directory del mio codice. Come posso leggerlo e assegnarlo a una variabile come quella sopra?

+0

il vostro esempio appena si legge il nome del file, non il contenuto dell'immagine. Che cosa stai cercando di fare? – Cal

risposta

9

Il codice che hai postato non leggerà i dati dell'immagine, ma piuttosto il suo nome file. Se avete bisogno di recuperare un'immagine nella stessa directory, è possibile recuperare il contenuto con file_get_contents(), che può essere utilizzato per uscita direttamente al browser:

$im = file_get_contents("./image.jpeg"); 
header("Content-type: image/jpeg"); 
echo $im; 

In caso contrario, è possibile utilizzare the GD library per leggere nell'immagine i dati per l'ulteriore elaborazione delle immagini:

$im = imagecreatefromjpeg("./image.jpeg"); 
if ($im) { 
    // do other stuff... 
    // Output the result 
    header("Content-type: image/jpeg"); 
    imagejpeg($im); 
} 

Infine, se non si conosce il nome del file dell'immagine che si ha bisogno (anche se è nella stessa posizione il tuo codice, si dovrebbe), è possibile utilizzare un glob() per trovare tutti i jpeg, ad esempio:

$jpegs = glob("./*.jpg"); 
foreach ($jpegs as $jpg) { 
    // print the filename 
    echo $jpg; 
} 
+0

Qual è la differenza tra questi due? \t \t \t \t \t \t $ localfile = $ _FILES ['media'] ['tmp_name']; \t \t \t \t \t \t $ nomefile = $ _FILES ['media'] ['nome']; –

+0

Uno è il nome file del file memorizzato sul server (nome_tmp), l'altro era il nome file originale sul computer client che ha caricato il file (nome). – Cal

+0

@Mozammil 'nome' punta al nome originale del file come caricato dall'utente. 'tmp_name' è un nome file assegnato da PHP nello spazio temporaneo, che punta ai dati del file effettivo. Esiste solo fino alla fine dello script, quindi 'tmp_name' non è più valido. –

0

Se si desidera leggere un'immagine e quindi renderlo come immagine

$image="path-to-your-image"; //this can also be a url 
$filename = basename($image); 
$file_extension = strtolower(substr(strrchr($filename,"."),1)); 
switch($file_extension) { 
    case "gif": $ctype="image/gif"; break; 
    case "png": $ctype="image/png"; break; 
    case "jpeg": 
    case "jpg": $ctype="image/jpeg"; break; 
    default: 
} 

header('Content-type: ' . $ctype); 
$image = file_get_contents($image); 
echo $image; 

Se il percorso è un URL, ed è tramite protocollo https: //, allora si potrebbe desiderare di cambiare il protocollo di sito http

Working fiddle