2010-01-05 29 views
6

En PHP usando GD o imagemagick cómo puedo crear una foto desde una URL, quiero construir una función que pueda pasar en algunos parámetros y levantar la imagen, puede actualizar una imagen grande, redimensionarla más pequeña, luego redimensionar algunas miniaturas más y guardar todas las ubicaciones desde una imagen, pero me gustaría agregar la capacidad de obtener una imagen de una URL y luego ejecutar mi código en ella para cambiar el tamaño y hacer los pulgares.¿Cómo puedo cargar una imagen desde una URL en PHP

debería utilizar rizo o alguna otra cosa ningún ejemplo o las ideas serán bienvenidos

Respuesta

11
$image = @ImageCreateFromString(@file_get_contents($imageURL)); 

if (is_resource($image) === true) 
{ 
    // image is valid, do your magic here 
} 

else 
{ 
    // not a valid image, show error 
} 

El @ en ambas funciones están ahí para evitar PHP de tirar errores si la URL no es una imagen válida.

+1

probablemente debería añadir el indicador' FILE_BINARY' ... – Rob

+0

@ Rob: FILE_BINARY: Este es el ** ** configuración predeterminada y no se puede utilizar con FILE_TEXT. Sin mencionar que se aplica solo a PHP 6. –

+0

Esto parece impresionante si funciona como yo quiero, así que en este caso $ $ tiene realmente el archivo en la memoria de mi servidor, como si fuera a subirlo a un formulario. ? – JasonDavis

2

Dependiendo de la configuración de PHP, fopen puede o no permitir directamente: http://php.net/manual/en/function.fopen.php

Como alternativa, puede abrir un zócalo (http://php.net/manual/en/book.sockets.php) y escribe/lee HTTP (http://www.faqs.org/rfcs/rfc2616.html) directamente. No usaría curl a menos que sea MUY cuidadoso con los permisos (especialmente con la ejecución), o puede garantizar que ninguno malicioso tendrá acceso a la herramienta, ya que efectivamente abrirá una posible vía de ataque (bueno, en rigor, ya son, pero esto tiene un par de maneras diferentes que puede abusarse)

0
$img = ''; 
$fp = fopen($url, 'rb'); 
if($fp) { 
    while($buf = fread($fp, 1024)) { 
     $img .= $buf; 
    }  
} 
fclose($fp); 

// asumiendo URL fopen envolturas están habilitados

+0

Esto funciona, pero 'file_get_contents' es preferible, con mucho, –

Cuestiones relacionadas