> Faqs > GD vs Imagick

GD vs Imagick

Veo que en PHP existen dos librerías para el tratamiento de imágenes.

  • GD
  • Imagick

Quisiera saber cuáles son las ventajas e inconvenientes de cada una de ellas, a fin de escoger la más adecuada para mi proyecto.

Respuestas

Bien. Esas son las librerías que el lenguaje te ofrece de manera "nativa", aunque hay un montón de librerías de terceros que generalmente se apoyan en una de estas dos, o en ambas a elección del desarrollador.

Pero sí, refiriéndonos a GD y Imagick, las diferencias son básicamente la potencia y disponibilidad.

Librería GD: Esta librería es bastante menos potente. Esto quiere decir que ofrece menos calidad de procesamiento de imagen que Imagick y también dar problemas de memoria al procesar imágenes muy grandes, pues depende directamente de la memoria de PHP. Por su parte, GD suele estar disponible en mayor cantidad de servidores, por lo que su disponibilidad generalmente es mayor y también es un poco más fácil de utilizar.

Imagick: Esta librería es bastante más potente, permitiendo el procesamiento imágenes enormes, ya que la memoria la obtiene de manera independiente de PHP. Por tanto, con Imagick no tienes que preocuparte mucho del tamaño de las imágenes que vas a procesar. También Imagick es capaz de procesar más formatos de imágenes, aunque generalmente los básicos (Gig, Jpg, Png y otros) los soportan las dos librerías. El problema es que muchas veces no está disponible en los servidores donde vas a publicar tu sitio web.

En términos de velocidad las dos son más o menos igual de rápidas, teniendo pocas diferencias, unas veces a más y otras veces a menos.

En relación a cuál elegir tienes que tener en cuenta dónde vas a publicar tu sitio web y qué soporte te ofrecen en ese servidor. Al ser GD una librería que usa la propia memoria de PHP para trabajar, suele estar más disponible en servidores de alojamiento compartido, ya que así el servidor no corre riesgo de "inundarse" por solicitudes muy pesadas en Imagick. En resumen, antes de programar tu solución, mira si va a ser compatible con tu servidor. Obviamente, si tienes un VPS hacia arriba, puedes instalar cualquiera de ellas a tu gusto, pero si estas en un hosting compartido no vas a poder hacer eso.

Otra sugerencia que puede estar bien, es usar alguna librería de más alto nivel, como Intervention Image, http://image.intervention.io/ que soporta tanto una librería como otra. Es decir, puedes desarrollar con un API común y luego decidir qué librería de procesamiento de imágenes quieres que se use, pudiendo pasar de GD a Imagick (o viceversa) sin problemas. Puedes saber más sobre esta librería en este artículo https://desarrolloweb.com/articulos/intervention-image-manipulacion-imagenes-php.html

Miguel Angel
2967 136 197 13

GD es suficiente para la mayoría de necesidades pero no ofrece soporte para archivos fotográficos grandes o enormes, sobre todo en alojamientos compartidos, donde la memoria de PHP está limitada para mejorar el rendimiento de servidores que alojan cientos de dominios.

La solución sería simplemente limitar el tamaño de los uploads que se realizan mediante PHP por los usuarios de la página. Así te aseguras que las imágenes que vayas a retocar con GD sean del tamaño adecuado.

Salva
264 3 19 2