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'';
}
}
?>