que jpg imagenes imagejpeg imagecreatefromjpeg imagecopyresampled formato caracteristicas php png jpeg

php - jpg - png que es



Use PHP para convertir PNG a JPG con compresiĆ³n? (8)

Es posible que desee ver Image Magick , generalmente considerada la biblioteca estándar de facto para el procesamiento de imágenes. Sin embargo, requiere un módulo adicional de php para ser instalado, no estoy seguro si alguno / cuáles están disponibles en una instalación predeterminada.

HTH.

Tengo un montón de archivos PNG de alta calidad. Quiero usar PHP para convertirlos a JPG debido a que tiene tamaños de archivo más pequeños y mantiene la calidad. Quiero mostrar los archivos JPG en la web.

¿PHP tiene funciones / bibliotecas para hacer esto? ¿La calidad / compresión es buena?


Este es un pequeño ejemplo que convertirá ''image.png'' en ''image.jpg'' con un 70% de calidad de imagen:

<?php $image = imagecreatefrompng(''image.png''); imagejpeg($image, ''image.jpg'', 70); imagedestroy($image); ?>

Espero que ayude


Haga esto para convertir de manera segura un PNG a JPG con la transparencia en blanco.

$image = imagecreatefrompng($filePath); $bg = imagecreatetruecolor(imagesx($image), imagesy($image)); imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255)); imagealphablending($bg, TRUE); imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)); imagedestroy($image); $quality = 50; // 0 = worst / smaller file, 100 = better / bigger file imagejpeg($bg, $filePath . ".jpg", $quality); imagedestroy($bg);



Tenga cuidado con lo que quiere convertir. JPG no admite transparencia alfa mientras que PNG lo hace. Perderás esa información.

Para convertir, puede usar la siguiente función:

// Quality is a number between 0 (best compression) and 100 (best quality) function png2jpg($originalFile, $outputFile, $quality) { $image = imagecreatefrompng($originalFile); imagejpeg($image, $outputFile, $quality); imagedestroy($image); }

Esta función usa las funciones imagecreatefrompng() y imagejpeg() de la biblioteca de GD.



Sé que no es una respuesta exacta al OP, pero como ya se dieron las respuestas ...

¿Realmente necesitas hacer esto en PHP?
Lo que quiero decir es: si necesitas convertir muchas imágenes, hacerlo en PHP podría no ser la mejor manera: te enfrentarán a memory_limit , max_execution_time , ...

También diría que GD podría no obtener la mejor relación calidad / tamaño; pero no estoy seguro de eso (si haces una comparación entre GD y otras soluciones, estoy muy interesado por los resultados ;-))

Otro enfoque, no usar PHP, sería usar Image Magick a través de la línea de comando (y no como una extensión de PHP como sugirieron otras personas)

Tendría que escribir un script de shell que pase por todos los archivos .png , y se los da a cualquiera

  • convert para crear un nuevo archivo .jpg para cada archivo .png
  • o mogrify para trabajar directamente en el archivo original y anularlo.


Como nota al margen: si está haciendo esto directamente en su servidor de producción, podría poner un poco de tiempo de espera entre un montón de conversiones, para que se enfríe un poco a veces ^^


He usado el script shell + convert / mogrify varias veces (haciendo que se ejecuten durante algo así como 10 horas una vez) , y hacen el trabajo realmente bien :-)


<?php function createThumbnail($imageDirectory, $imageName, $thumbDirectory, $thumbWidth) { $explode = explode(".", $imageName); $filetype = $explode[1]; if ($filetype == ''jpg'') { $srcImg = imagecreatefromjpeg("$imageDirectory/$imageName"); } else if ($filetype == ''jpeg'') { $srcImg = imagecreatefromjpeg("$imageDirectory/$imageName"); } else if ($filetype == ''png'') { $srcImg = imagecreatefrompng("$imageDirectory/$imageName"); } else if ($filetype == ''gif'') { $srcImg = imagecreatefromgif("$imageDirectory/$imageName"); } $origWidth = imagesx($srcImg); $origHeight = imagesy($srcImg); $ratio = $origWidth / $thumbWidth; $thumbHeight = $origHeight / $ratio; $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight); imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $origWidth, $origHeight); if ($filetype == ''jpg'') { imagejpeg($thumbImg, "$thumbDirectory/$imageName"); } else if ($filetype == ''jpeg'') { imagejpeg($thumbImg, "$thumbDirectory/$imageName"); } else if ($filetype == ''png'') { imagepng($thumbImg, "$thumbDirectory/$imageName"); } else if ($filetype == ''gif'') { imagegif($thumbImg, "$thumbDirectory/$imageName"); } } ?>

Esta es una muy buena secuencia de comandos en miniatura =) Aquí hay un ejemplo:

$ path = La ruta a la carpeta donde está la imagen original. $ name = El nombre del archivo del que quiere hacer una miniatura. $ thumbpath = La ruta al directorio donde desea guardar la miniatura. $ maxwidth = el ancho máximo de la miniatura en PX, por ej. 100 (que será 100px).

createThumbnail($path, $name, $thumbpath, $maxwidth);