Combinar varias imágenes PNG transparentes con PHP GD2
Me toca hacer un script que tome 3 imágenes y las combine mediante PHP y la librería GD para ir creando imágenes personalizadas para cada producto en un proyecto de mi trabajo. La gracia de esto viene a ser que hay una imagen sólida y las 2 que se apilan son PNG transparentes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
< ?php /** Debemos usar imagecopyresampled() en lugar de imagecopy() ya que las imagenes transparentes van a rellenar su canal alpha con negro... */ //tomamos la imagen "base" $tapa_caratula = imagecreatefrompng("tapa_caratula.png"); // Creamos las dos imágenes a utilizar $caratula_base = imagecreatefrompng("caratula_base.png"); $icono = imagecreatefrompng("icono.png"); // Copiamos una de las imágenes sobre la otra. // imagecopyresampled( "img_origen", "imagen_que_nueva", pos x imagen_que_nueva, pos y imagen_que_nueva, pos_x_img_origen, pos_y_img_origen, largo_para_imagen_nueva, ancho_para_imagen_nueva, largo_para_imagen_origen, largo_para_imagen_origen); imagecopyresampled( $tapa_caratula, $caratula_base, 0, 0, 0, 0, imagesx($caratula_base), imagesy($caratula_base), imagesx($caratula_base), imagesy($caratula_base) ); imagecopyresampled( $tapa_caratula, $icono, (imagesx($caratula_base) / 2) - (imagesx($icono) / 2) + 10, 80, 0, 0, imagesx($icono), imagesy($icono), imagesx($icono), imagesy($icono) ); // Damos salida a la imagen final a un archivo imagepng($tapa_caratula, "salida.png"); // Destruimos las imágenes imagedestroy($tapa_caratula); imagedestroy($caratula_base); imagedestroy($icono); |
Descargar