Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
Combinar dos imágenes.png a salida.png usando gd

He estado tratando de fusionar dos imágenes usando gd lib. Una tarjeta (fondo) y un marco "nuevo" para esa tarjeta (primer plano, con el centro transparente).

Este es mi código:

 <?php $card = imagecreatefrompng('img/folder1/card.png'); $frame = imagecreatefrompng('img/folder2/frame.png'); list($width,$height) = getimagesize($frame); imagealphablending($card, true); imagesavealpha($card, true); imagecopy($card, $frame, 0, 0, 0, 0, $width, $height, 100); header('Content-Type: image/png'); imagepng($card);

Obtengo una salida, pero es solo la tarjeta sin el marco.

Saludos cordiales, ZF

Editar (12 horas después): descubrí por qué mi salida es solo la tarjeta (fondo), independientemente de mis cambios.

Eliminé el último valor 100 después de $height :

 imagecopy($card, $frame, 0, 0, 0, 0, $width, $height);

Ahora mi salida es solo frame.png . No importa si uso ImageAlphaBlending .

Pero sé que card.png definitivamente está debajo de frame.png , porque moví el frame.png hacia un lado en un eje, y card.png se vuelve visible. Por lo tanto, falla al fusionar las imágenes, respetando la transparencia de frame.png

Si guardo la salida en un archivo, es un .png transparente aunque.

¿Es imagecopy incluso adecuada para fusionar frame.png con un centro transparente en un fondo ( card.png )?

Editar: ¡Perdón por el desorden! Estaba trabajando con dos versiones al mismo tiempo. Ahora he limpiado mi espacio de trabajo actual y he escrito una nueva versión desde cero.

Eliminé el 100 después de $height en la versión que publiqué aquí:

 imagecopy($card, $frame, 0, 0, 0, 0, $width, $height);

Aclaración de la edición anterior: Nada cambió en absoluto. La salida seguía siendo solo card.png .

PERO el código de mi nueva versión es ( Final & Working ):

 <?php $card = imagecreatefrompng('img/folder1/card.png'); $frame = imagecreatefrompng('img/folder2/frame.png'); $width = "402"; $height = "599"; imagealphablending($card, true); imagesavealpha($card, true); imagecopy($card, $frame, 0, 0, 0, 0, $width, $height); header('Content-Type: image/png'); imagepng($card); imagedestroy($card); imagedestroy($frame);

Como puede notar, codifiqué el ancho y la altura de la imagen. En lugar de usar getimagesize

 list($width,$height) = getimagesize($frame);

Verifiqué la salida de $width , $height antes y son correctos, pero ese parecía ser mi problema. Si alguien tiene una respuesta a eso, ¡no dude en explicarla!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Abandoné el proyecto durante bastante tiempo. Como sugirió Maik , podría haber sido un problema de formato .png.

Qué decir... el consejo, y por tanto el conocimiento, viene con el tiempo:

De hecho, el error no fue producido por getimagesize y no es necesario codificar el tamaño de la imagen.

Era un problema de formato de imagen simple.

La "Nueva Versión" mencionada que escribí desde cero simplemente usó diferentes imágenes .png con el formato correcto.

Simplemente no sabía esto en ese momento, porque aparentemente obtuve la misma imagen del creador, pero han sido diferentes representaciones y, por lo tanto, diferentes tipos de formato.

Vota a favor de Maik y verifica tu tipo de formato .png (tipo 3).

Editar: Ah, y tal vez eche un vistazo a imagick;)

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda