Imagine din PHP cu text dinamic

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
AndreyIstetul
Mesaje:53

Imagine din PHP cu text dinamic

Buna
As vrea sa fac o imagine cu semnatura /text dinamica (care sa afiseze un text amuzant, de exemplu: "sa nu te pui cu mine cand stiu ca IP-ul tau este...").
Din pacate nu reusesc nimic. Uitati un exemplu din ce am incercat:

Cod: Selectaţi tot

<?php
$ip = $_SERVER['REMOTE_ADDR']; 
$text = 'IP-ul tau este $ip ';

// setare dimensiuni suprafetei de baza
$height = 100;
$width = 500;
// definirea imaginii
$im = imagecreate($width, $height);

// setare culori
$fundal = imagecolorallocate($im, 10, 10, 250);
$text_color = imagecolorallocate($im, 255, 255, 255);

// finalizarea imaginii
imagefill($im, 0, 0, $fundal);
imagestring($im, 4, 10, 15, $text, $text_color);

// trimiterea datelor de iesire
header('Content-type: image/jpeg');
imagepng($im);

// curatarea memoriei
imagedestroy($im);
?>
Am incercat mai multe, dar nimic n-a reusit. Singurul lucru ce-a reusit a fost sa las doar codul cu afisare ip in $text, dar asta nu ma ajuta cu nimic.
Va rog sa nu ma trimiteti la lectia cu imagini in php, pentru ca n-am reusit nimic.
Uitati cum imi apare pentru codul de mai sus, adresa URL: worldwidenet.tk/img/img.php

tycyssg Mesaje:58
Eu unul as face altfel. Un tabel cu un rand si o coloana in html.
As pune imaginea pe fundal , iar apoi cu un DIV as afisa textul din PHP.

Cod: Selectaţi tot

<?php
$ip='Ip-ul tau este'.$_SERVER['REMOTE_ADDR'];

<html>
<body>
<table><tr><td style="background-image:url('imagineata.png');background-repeat:no-repeat; widht:xxpx; height:xxpx;")>
echo $ip;
</td></tr></table>
</body></html>
 ?>

AndreyIstetul Mesaje:53
Buna @tyc,
Ideea este sa fie o imagine, ca sa poata intra in semnatura unui forum.
Inca ceva: era o vreme un script cu o semnatura dinamica pentru phpbb. Il mai aveti? Nu-l mai gasesc nicaieri. M-ar ajuta foarte mult.

MarPlo Mesaje:4343
Scriptul de mai sus, de la inceput, e bun; problema e la folosirea tipului de ghilimele pentru text.
Intre ghilimele simple nu e recunoscuta valoarea variabilei adaugata intre ele, ci apare cu numele asa cum e scrisa.
Daca vrei sa adaugi valori de variabile intr-un sir text, sunt 2 modalitati:
1. Folosesti ghilimele duble (variabila adaugata intre ghilimele duble e inlocuita cu valoarea ei).
Adica asa:

Cod: Selectaţi tot

$text = "IP-ul tau este $ip ";
 
2. Folosesti ghilimele simple, dar scoti variabila dintre ele, si o atasezi prin concatenare, cu operatorul punct "." (merge si daca sunt ghilimele duble).
Adica asa:

Cod: Selectaţi tot

$text = 'IP-ul tau este'. $ip;
 

tycyssg Mesaje:58
AndreyIstetul scrie:Buna @tyc,
Ideea este sa fie o imagine, ca sa poata intra in semnatura unui forum.
Pai poate intra oricum in semnatura unui forum daca accepta script php. doar ca modifici umpic scriptul ca de ex.:

Cod: Selectaţi tot

<?php
$ip='Ip-ul tau este'.$_SERVER['REMOTE_ADDR'];
echo '<html>
<body>
<table><tr><td style="background-image:url(\'http://ink imagehack or imagebam.com\');background-repeat:no-repeat; widht:xxpx; height:xxpx;")>' . $ip. '</td></tr></table>
</body></html>';
 ?>
Sau poti sa faci cum ti-a explicar marplo. Dar eu m-am gandit la ideea asta ca iti poti pune tu ce imagine vrei si o sa arate mult mai bine decat una simpla creata cu php.
Acum alegerea iti apartine.

AndreyIstetul Mesaje:53
Buna. Multumesc Marplo, merge.
Scuze, @tyc, dar forumurile la care doresc sa bag aceasta semnatura nu suporta php...adica suporta, dar nu e permis deoarece este periculos sa lasi pe cineva sa-ti puna linii de cod ce urmeaza a fi executate la deschidere paginii. Poti sa spargi respectivul site foarte usor.
Inca o intrebare care probabil e foarte simpla, dar nu am pricep: cum pot sfarsi randul in care sunt si sa trec la unul nou?
Adica sa nu fie tot textul din variabila pe un rand sa fie pe mai multe.
MarPlo, cum as putea sa fac ceva in html, cum spunea @tyc, dar apoi sa fie facut imagine de php. Adica, de exemplu, codul lui @tyc html, in final sa rezulte o imagine jpeg. Este posibil? Sau aberez?
Daca nu, totusi, cum este posibil sa pun un font, o marime etc care sa rezulte in final o imagine?
Multmesc anticipat.

P.S.: Daca ati gasi acea semnatura dinamica pentru phpbb care era la un moment dat pe net, as fi foarte bucuros:D.

MarPlo Mesaje:4343
Nu se poate doar cu PHP sa creezi /transformi codul HTML in imagine.
Ca sa apara textul in imagine pe mai multe linii, trebuie sa definesti o lungime fixa pt. imagine, apoi textul sa fie adaugat automat pe alt rand cand ajunge la lungimea imaginii.
Uite, poti folosi functia din acest exemplu:

Cod: Selectaţi tot

<?php
// creaza imaginea cu textul
// parametri: textul, lungimea_imaginii, culoare text (optional, initial albastru), culoare fundal (optional, initial galbui)
function texttoimage($text, $image_width, $colour = array(0,1,244), $background = array(250,250,100)) {
  $font = 5;
  $line_height = 15;
  $padding = 5;
  $text = wordwrap($text, ($image_width/10));
  $lines = explode("\n", $text);
  $image = imagecreate($image_width,((count($lines) * $line_height)) + ($padding * 2));
  $background = imagecolorallocate($image, $background[0], $background[1], $background[2]);
  $colour = imagecolorallocate($image,$colour[0],$colour[1],$colour[2]);
  imagefill($image, 0, 0, $background);
  $i = $padding;

  foreach($lines as $line){
    imagestring($image, $font, $padding, $i, trim($line), $colour);
    $i += $line_height;
  }

  header("Content-type: image/jpeg");
  imagejpeg($image);
  imagedestroy($image);
  exit;
}

  /* Exemplu */

$text = "Aici se adauga textul, care va fi afisat in imagine";

// lungimea imaginii, in pixeli
$image_width = 180;

// apeleaza functia
texttoimage($text, $image_width);
?>

AndreyIstetul Mesaje:53
Buna. Nu am inteles foarte multe...probabil ca o sa mearga, dar nu am timp acum sa incerc. Multumesc frumos pentru ajutor.