manipular manejo libreria imagenes imagen dimensiones crear con php image image-processing resources gd

manejo - PHP/GD-Búsqueda de tipo de recurso de imagen



php gd install (3)

Tener solo un recurso de imagen GD válido ¿es posible encontrar el tipo de imagen original?

Por ejemplo:

$image = ImageCreateFromPNG(''http://sstatic.net/so/img/logo.png'');

¿Puedo obtener el tipo de imagen original (PNG) teniendo solo la variable $ image disponible?


No lo creo, no. $ imagen está en formato de imagen interna de GD después de que ha sido procesada por la función ImageCreate() .


Simplemente intente cargar el recurso con el cargador png, y si no es una imagen png, fallará, devolviendo FALSE. Luego simplemente repita con cada uno de los formatos válidos que desea tener, y si todos fallan, muestre un error.


No estoy seguro si se puede hacer desde la variable $ image, pero para obtener MimeType, generalmente puede usar cualquiera de los cuatro:

// with GD $img = getimagesize($path); return $img[''mime'']; // with FileInfo $fi = new finfo(FILEINFO_MIME); return $fi->file($path); // with Exif (returns image constant value) return exif_imagetype($path) // deprecated return mime_content_type($path);

A partir de la descripción de su pregunta, considero que desea utilizar un archivo remoto, por lo que podría hacer algo como esto para que esto funcione:

$tmpfname = tempnam("/tmp", "IMG_"); // use any path writable for you $imageCopy = file_get_contents(''http://www.example.com/image.png''); file_put_contents($tmpfname, $imageCopy); $mimetype = // call any of the above functions on $tmpfname; unlink($tmpfname);

Nota: si la función MimeType que usará es compatible con archivos remotos, utilícela directamente, en lugar de crear una copia del archivo primero

Si necesita MimeType solo para determinar qué función de creación de imágenes creará, ¿por qué no carga primero el archivo como una cadena y luego deja que GD decida, por ejemplo?

// returns GD image resource of false $imageString = file_get_contents(''http://www.example.com/image.png''); if($imageString !== FALSE) { $image = imagecreatefromstring($imageString); }