• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bild auf Bild darstellen

Padarom

Neues Mitglied
Hallo zusammen.
Ich bin aktuell dabei schonmal testweise eine dynamische Signatur zu schreiben. Da bei meinem Projekt jeder Nutzer einen eigenen Avatar haben kann, möchte ich gerne wissen, ob es möglich ist ein solches Bild zu verkleinern und ebenfalls mit dem folgenden Code auf dem Bild darzustellen.
PHP:
<?php header("Content-type: image/png");
$mysql = mysql_connect(IP, Name, PW);
mysql_select_db("Padarom");
$query = mysql_query("SELECT * FROM users WHERE Name = '".mysql_real_escape_string($_GET["name"])."'");
$row = mysql_fetch_object($query);
$img = imagecreatefrompng("Sig.png");
$schwarz = ImageColorAllocate($img, 0, 0, 0); // Farbe
$weiß = ImageColorAllocate($img, 255, 255, 255); // Farbe
$rot = ImageColorAllocate($img, 255, 0, 64); // Farbe
$grün = ImageColorAllocate($img, 51, 204, 0); // Farbe
$fett = '/fonts/segoeuib.ttf';
$normal = '/fonts/segoeui.ttf';
ImageTTFtext($img, 15, 0, 380, 55, $schwarz, $fett, $_GET["name"]);
$zeit = number_format(floor($row->TimePlayed / 60), 0, ",", ".") ." Std. " .($row->TimePlayed % 60). " Min.";
imageTTFtext($img, 10, 0, 165, 75, $weiß, $fett, "Spielzeit:"); // Titel
imageTTFtext($img, 10, 0, 165, 90, $weiß, $fett, "Adminlevel:"); // Titel
imageTTFtext($img, 10, 0, 165, 105, $weiß, $fett, "Sponsorpunkte:"); // Titel

if($row->Admin == 1) $admin = "Supporter";
elseif($row->Admin == 2) $admin = "Moderator";
elseif($row->Admin == 3) $admin = "Administrator";
elseif($row->Admin == 0) $admin = "Kein Admin";
ImageTTFtext($img, 10, 0, 223, 75, $weiß, $normal, $zeit); // Text
imageTTFtext($img, 10, 0, 243, 90, $weiß, $normal, $admin); // Text
imageTTFtext($img, 10, 0, 267, 105, $weiß, $normal, number_format($row->Sponsor, 0, ",", ".")." Punkte"); // Text
if($row->Online == "1") imageTTFtext($img, 12, 0, 425, 185, $grün, $fett, "Derzeit Online"); // Text
else imageTTFtext($img, 12, 0, 420, 185, $rot, $fett, "Derzeit Offline"); // Text
mysql_close($mysql);
ImagePNG($img);
ImageDestroy($img);
?>
Mit freundl. Grüßen
Padarom
 
Danke für die schnelle Antwort. Ist dies auch dann möglich, wenn das Bild von einer externen Seite geladen wird? (Der Nutzer hat die Möglichkeit einfach eine URL zu einem Bild anzugeben, dann wird lediglich die URL als Bild angezeigt, das Bild selbst wird dann nicht hochgeladen.) Und wenn ja, wie könnte man dann das Dateiformat des Bildes bestimmen?

edit: Habe es aktuell so probiert:
PHP:
<?php
$mysql = mysql_connect(IP, Name, PW);
mysql_select_db("Padarom");
$query = mysql_query("SELECT * FROM users WHERE Name = '".$_GET["name"]."'");
$row = mysql_fetch_object($query);
header("Content-type: image/png");
$width = 500;
$height = 150;
$img = imagecreatefrompng("Sig.png");
$size = getimagesize($row->Avatar);
$filetype_array = array(".gif"=>"1",
                ".jpg"=>"2",
                ".jpeg"=>"2",
                ".png"=>"3",);
if($filetype_array($size[2]) == 1) $uimg = imagecreatefromgif($row->Avatar);
if($filetype_array($size[2]) == 2) $uimg = imagecreatefromjpeg($row->Avatar);
if($filetype_array($size[2]) == 3) $uimg = imagecreatefrompng($row->Avatar);
$schwarz = ImageColorAllocate($img, 0, 0, 0);
$weiß = ImageColorAllocate($img, 255, 255, 255);
$rot = ImageColorAllocate($img, 255, 0, 64);
$grün = ImageColorAllocate($img, 51, 204, 0);
$fett = '/fonts/segoeuib.ttf';
$normal = '/fonts/segoeui.ttf';
ImageTTFtext($img, 15, 0, 380, 55, $schwarz, $fett, $_GET["name"]);
$zeit = number_format(floor($row->TimePlayed / 60), 0, ",", ".") ." Std. " .($row->TimePlayed % 60). " Min.";
imageTTFtext($img, 10, 0, 165, 75, $weiß, $fett, "Spielzeit:");
imageTTFtext($img, 10, 0, 165, 90, $weiß, $fett, "Adminlevel:");
imageTTFtext($img, 10, 0, 165, 105, $weiß, $fett, "Sponsorpunkte:");

if($row->Admin == 1) $admin = "Supporter";
elseif($row->Admin == 2) $admin = "Moderator";
elseif($row->Admin == 3) $admin = "Administrator";
elseif($row->Admin == 0) $admin = "Kein Admin";
ImageTTFtext($img, 10, 0, 223, 75, $weiß, $normal, $zeit);
imageTTFtext($img, 10, 0, 243, 90, $weiß, $normal, $admin);
imageTTFtext($img, 10, 0, 267, 105, $weiß, $normal, number_format($row->Sponsor, 0, ",", ".")." Punkte");
if($row->Online == "1") imageTTFtext($img, 12, 0, 425, 185, $grün, $fett, "Derzeit Online");
else imageTTFtext($img, 12, 0, 420, 185, $rot, $fett, "Derzeit Offline");
imagecopyresized($img, $uimg, 5, 60, 0, 0, 150, 150, $size[0], $size[1]);
mysql_close($mysql);
ImagePNG($img);
ImageDestroy($img);
?>
So wird das Bild allerdings überhaupt nicht mehr angezeigt. Habe bereits alles neue ausgeklammert (bis auf das neue imagecreatefromjpeg - Habe auch mal direkt eine URL angegeben anstatt über die if-Abfrage zu erzeugen) und das Bild wird ebenfalls nicht angezeigt. Liegt also scheinbar an dem zweiten imagecreate.
 
Zuletzt bearbeitet:
der 3. Wert, der von getimagesize zurückgegeben wird, ist ja eine Zahl, und nicht .gif, .jpg etc. Demnach haut das mit dem $filtaype_array auch nich hin (wenn $size[2] z.B. 1 is, ist der Rückgabewert "2")

Probier also mal statt
PHP:
if($filetype_array($size[2]) ==

einfach direkt
PHP:
if($size[2] == ...


(außerdem müssten die runden klammern hier:
PHP:
$filetype_array($size[2])
eckige Klammern sein)



das zweite createimage an sich dürfte eigtl. kein Problem darstellen. vlt. hast du i-was "falsch" ausgeklammert, weswegen es dann nich geht.
 
Soo, melde mich leider erst jetzt. Sorry dafür. Hat alles so geklappt wie du es gesagt hast.
Allerdings habe ich aktuell noch eine andere Frage (für die ich nicht extra einen neuen Thread aufmachen möchte).

Die meisten Foren lassen es ja nicht zu, dass man per img-Tag .php Dateien anzeigt. Folglich müsste ich die Datei als .png oder .jpg in einem Verzeichnis speichern und dies darstellen lassen. Das Problem dabei ist aber allerdings, dass dieses Bild immer erst wieder dann aktualisiert wird, wenn die .php Seite neu aufgerufen wird. Wie kann ich dies umgehen?

Habe es jetzt mit .htaccess gelöst.
Code:
RewriteEngine on 
RewriteBase /
RewriteRule ^sig/(.*).png$ ucp/sig.php?name=$1
 
Zuletzt bearbeitet:
Zurück
Oben