Autor Zpráva
lorin
Profil
Dobrý večer, snažím se napsat PHP kód, který na černé pozadí vypíše nějaký text, vloží několik obrázků a nakonec vytvoří obrázek ke stažení.

Zde je můj kód:
  // Výška a šířka obrázku na pozadí.
  $width = 512;
  $height = 128;

  // Načtení obrázku, který chci do pozadí nakopírovat
  $logo = imagecreatefrompng("obrazek.png");

  // Vytvoření obrázku -> pozadí.
  $image = imagecreatetruecolor($width, $height);
 
  // Funkce hex2rgb vrací pole array(RED, GREEN, BLUE) 
  $bg_color = hex2rgb($_GET["bg_color"]); // Barva pozadí (černá)
  $font_color = hex2rgb($_GET["font_color"]); // Barva textu (bílá)

  // Obarví pozadí černě  
  imagefilledrectangle($image, 0, 0, $width, $height, imagecolorallocate($image, $bg_color[0], $bg_color[1], $bg_color[2]));

  // Text pro vložení do pozadí
  imagestring($image, 5, 10, 10, "test", imagecolorallocate($image, $font_color[0], $font_color[1], $font_color[2]));

  // Vloží logo do obrázku na pozadí
  imagecopy($image, $logo, 10, 30, $width, $height, 64, 64);
  
  // Vytvoří celkový obrázek
  imagepng($image, "test.png");

  // Zobrazí obrázek
  echo "<img src='test.png'/>";

  // Uvolní paměť
  imagedestroy($image);
  imagedestroy($logo);

Vytvoření černého pozadí, vypsání textu a vlastně i kopírování obrázku funguje. Problém je, že kopírovaný obrázek (logo.png) není vidět. Pokud ho ale umístím "nad text", text zmizí. Řekl bych tedy, že logo tam opravdu je. Jen není vidět ;). Nemá někdo tušení, čím by to mohlo být? Je nutné vyhradit si každou barvu, která se v logu vyskytuje?

Děkuji,
lorin
lorin
Profil
Už vím kde byla chyba.

imagecopy($image, $logo, 10, 30, $width, $height, 64, 64);

má být

imagecopy($image, $logo, 10, 30, 0, 0, 64, 64);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: