2012-04-05 23 views
5

Sé que¿Cómo leer una imagen con PHP?

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

obtendrá la imagen teniendo en cuenta que se utilizó el método POST. Intento leer una imagen que está en el mismo directorio que mi código. ¿Cómo lo leo y lo asigno a una variable como la de arriba?

+0

Su ejemplo simplemente lee el nombre del archivo, no el contenido de la imagen. ¿Qué es lo que estás tratando de hacer? – Cal

Respuesta

9

El código que ha publicado no leerá los datos de la imagen, sino su nombre de archivo. Si necesita recuperar una imagen en el mismo directorio, puede recuperar su contenido con file_get_contents(), que se puede utilizar para salir directamente al navegador:

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

De lo contrario, puede utilizar the GD library a leer en la imagen los datos para su posterior procesamiento de imágenes:

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

por último, si no sabe el nombre del archivo de la imagen que necesita (aunque si está en la misma ubicación que el código, debería), se puede utilizar una glob() para encontrar todos los jpegs, por ejemplo:

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

¿Cuál es la diferencia entre estos dos? \t \t \t \t \t \t $ localfile = $ _FILES ['media'] ['tmp_name']; \t \t \t \t \t \t $ filename = $ _FILES ['media'] ['name']; –

+0

Uno es el nombre de archivo del archivo almacenado en su servidor (tmp_name), el otro era el nombre de archivo original en la computadora cliente que cargó el archivo (nombre). – Cal

+0

@Mozammil 'name' apunta al nombre original de los archivos cargados por el usuario. 'tmp_name' es un nombre de archivo asignado por PHP en el espacio temporal, que apunta a los datos de archivo reales. Solo existe hasta que el script termina, entonces 'tmp_name' ya no es válido. –

0

Si desea leer una imagen y luego hacer como una imagen

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

Si la ruta es una URL, y es usando protocolo https: // entonces es posible que desee cambiar el protocolo HTTP a

Working fiddle

Cuestiones relacionadas