ver una programa para online metapicz metadatos imagen extension analizador php image upload png exif

una - ¿Convertir imagen JPG/GIF a PNG en PHP?



metapicz (4)

Posible duplicado de
Convierta la imagen jpg a formato gif, png y bmp usando PHP

Tengo un formulario PHP que permite cargas de imágenes y comprueba exif_imagetype(); para asegurarse de que una imagen sea válida

Sin embargo, quiero que todos los formatos, PNG, JPG, JPEG y GIF, terminen siendo PNG una vez enviados.

¿Cómo puedo hacer esto?


Muy simple usando las funciones gd :

switch (exif_imagetype($image)) { case IMAGETYPE_GIF : $img = imagecreatefromgif($image); break; case IMAGETYPE_JPEG : $img = imagecreatefromjpeg($image); break; default : throw new InvalidArgumentException(''Invalid image type''); } imagepng($img, $filename);

Por concisión, obviamente, esto no soluciona el caso si la imagen ya es un PNG.


Según el tipo de imagen que es, puede seleccionar la función correcta para abrir el archivo:

$extension = pathinfo($filename, PATHINFO_EXTENSION); switch ($extension) { case ''jpg'': case ''jpeg'': $image = imagecreatefromjpeg($filename); break; case ''gif'': $image = imagecreatefromgif($filename); break; case ''png'': $image = imagecreatefrompng($filename); break; }

Luego, simplemente guarda el archivo usando:

imagepng($image, $new_filename);


Solo necesitas imagepng() entonces. De hecho, casi se convierte en un trazador de líneas:

imagepng(imagecreatefromstring(file_get_contents($filename)), "output.png");

Utilizaría $_FILES["id"]["tmp_name"] para el nombre de archivo, y obviamente un nombre de archivo de salida diferente. Pero el examen del formato de la imagen se volvería redundante.


<form method="post" enctype="multipart/form-data"> <input type="file" name="image" /> <input type="submit" name="submit" value="Submit" /> </form> <?php if(isset($_POST[''submit''])) { if(exif_imagetype($_FILES[''image''][''tmp_name'']) == IMAGETYPE_GIF) { $newpng = ''image.png''; $png = imagepng(imagecreatefromgif($_FILES[''image''][''tmp_name'']), $newpng); } elseif(exif_imagetype($_FILES[''image''][''tmp_name'']) == IMAGETYPE_JPEG) { $newpng = ''image.png''; $png = imagepng(imagecreatefromjpeg($_FILES[''image''][''tmp_name'']), $newpng); } else //already png { $newpng = ''image.png''; } } ?>