Uso de la función de creación de imágenes

Estoy usando la función Crear imagen para crear una imagen con el mensaje de texto exacto usando el siguiente código

<?PHP
header ("Content-type: image/gif");
$image=imagecreatefromgif("myimage.gif"); // will be background img
$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";
imagestring($image, 4, 25, 10, $message, $black);
imagegif($image);
imagedestroy($image);
?>

La salida debería ser así

hola egipto

Ahora mi pregunta ¿Hay alguna manera de que pueda escribir una imagen sobre ella, no solo texto, de modo que si tengo una imagen de marca en la misma ruta (flag.gif Destacar) y me gustaría escribirlo justo después de mi $message ser así

Hola bandera de Egipto

Entonces, ¿es esto posible y cómo podría ser? ~ muchas gracias

Noticias basado en la idea de @MarcB de usar imagecopy función

<?PHP
header ("Content-type: image/gif");
$image=imagecreatefromgif("myimage.gif"); // will be background img


$src = imagecreatefromjpeg('flag.jpg');// new image will add
imagecopy($image, $src, 120, 10, 0, 0, 32, 20);

$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";
imagestring($image, 4, 25, 10, $message, $black);

imagegif($image);
imagedestroy($image);
?>

la salida no es de color verdadero POR QUÉ :(

enter image description here

CUALQUIER ayuda sobre este nuevo problema ~ gracias

preguntado el 12 de junio de 12 a las 22:06

gracias, nunca supe de imagecopy antes, pero intentaré combinar ambos códigos, espero que funcione ~ muchas gracias -

@MarcB he actualizado el código, ¡por favor, míralo! ¡Por qué no obtengo el color verdadero! -

Dado que la imagen es un .gif, es posible que los colores que necesita no estén en la paleta de gifs. ¿Puedes convertirlo en un archivo .jpg en su lugar? -

@SurrealDreams muchas gracias, también fue muy útil, cambié a .jpg y reemplacé imagecreatefromgif a imagecreatefromjpeg y funciona perfecto ~ gracias -

2 Respuestas

Con la ayuda de Surreal Dreams y Marc B Este funciona bien

<?PHP
header ("Content-type: image/gif");

$image=imagecreatefromjpeg("myimage.jpg"); // will be background img

$src = imagecreatefromjpeg('flag.jpg');// new image will add

imagecopy($image, $src, 120, 10, 0, 0, 32, 20);


$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";

imagestring($image, 4, 25, 10, $message, $black);
imagegif($image);
imagedestroy($image);
?>

Salida

enter image description here

Debería haber aprendido las siguientes funciones

  1. imagecopy
  2. imagecreatefromjpeg
  3. imagecreatefromgif

Respondido el 13 de junio de 12 a las 03:06

Si esta es la solución, no olvides aceptarla. Está bien aceptar su propia solución, siempre y cuando sea la que mejor funcione. - Sueños surrealistas

imagecopy() debería correctamente lidiar con las diferencias entre las paletas de las imágenes; sin embargo, el formato GIF no admite más de 256 colores, y GD tampoco cuando trabaja con imágenes basadas en paletas. Si ya existen 256 entradas de paleta cuando GD intenta usar un nuevo color, GD elegirá la coincidencia más cercana, lo que puede producir los resultados que ve.

Para evitar este problema, debe utilizar imagecreatetruecolor () para crear una imagen de color verdadero de 24 bits en la memoria. Luego puede usar imagecopy() para insertar cada imagen GIF (incluido el fondo) y imagepng () para generar una salida PNG, que es mejor para el arte lineal que JPEG, ofrece una mejor compresión que GIF y puede admitir más de 256 colores.

Respondido el 12 de junio de 12 a las 23:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.