2012-04-05 17 views
5

ich weiß, dassWie liest man ein Bild mit PHP?

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

wird das Bild bekommen gegeben, dass die POST-Methode verwendet wurde. Ich versuche ein Bild zu lesen, das sich im selben Verzeichnis wie mein Code befindet. Wie lese ich es und weise es einer Variablen wie der obigen zu?

+0

Ihr Beispiel nur die Dateinamen liest, nicht der Inhalt des Bildes das Protokoll hTTP. Was versuchst du zu tun? – Cal

Antwort

9

Der von Ihnen gepostete Code liest nicht die Bilddaten, sondern deren Dateinamen. Wenn Sie ein Bild im selben Verzeichnis abzurufen, können Sie den Inhalt mit file_get_contents(), abrufen, die sie an den Browser direkt Ausgang verwendet werden können:

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

Andernfalls Sie the GD library verwenden können, in dem Bild zu lesen Daten für die weitere Bildverarbeitung:

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

Schließlich Sie, wenn Sie nicht wissen den Dateinamen des Bildes müssen (obwohl, wenn sie als Code in der gleichen Lage ist, sollten Sie), Sie verwenden können glob() um alle JPEGs zu finden, zum Beispiel:

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

Was ist der Unterschied zwischen diesen beiden? \t \t \t \t \t \t $ localfile = $ _FILES ['media'] ['tmp_name']; \t \t \t \t \t \t $ filename = $ _FILES ['media'] ['name']; –

+0

Einer ist der Dateiname der Datei auf Ihrem Server (tmp_name), der andere ist der ursprüngliche Dateiname auf dem Client-Computer, der die Datei (Name) hochgeladen hat. – Cal

+0

@Mozammil 'name' zeigt auf den ursprünglichen Namen der Datei, wie sie vom Benutzer hochgeladen wurde. 'tmp_name' ist ein von PHP im temporären Speicher vergebener Dateiname, der auf die eigentlichen Dateidaten verweist. Es existiert nur, bis das Skript beendet wird, dann ist 'tmp_name' nicht mehr gültig. –

0

Wenn Sie ein Bild lesen möchten und machen es dann als Bild

$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; 

Wenn Ihr Pfad eine URL ist, und es ist https: // Protokoll dann könnten Sie ändern möchten

Working fiddle