Yaricks Skrevet 11. mai 2010 Del Skrevet 11. mai 2010 Hei! Driver å lager noen "forum signatur bannere", hvor jeg henter ut endel informasjon fra mysql databasen og så plasserer diverse tekst på bildet utifra bruker ID på bildet, men jeg kunne tenke meg å kunne plassere ett bildet på bildet, for å si det slik. Slik er koden i dag, og det fungerer fint med tekst, men skulle gjerne tenke meg å plassere da ett mye mindre bilde ut i fra "rank id" på brukeren. Noen som har peiling? <?php // Print two names on the picture, which accepted by query string parameters. include("connect_db.php"); $n1 = $_GET['n1']; $n2 = $_GET['n2']; $GetInfo = mysql_query("SELECT * FROM Users WHERE User=$n1 LIMIT 1") or die(mysql_error()); while($Getrow = mysql_fetch_array($GetInfo)) { $Firstname = $Getrow['Firstname']; $Lastname = $Getrow['Lastname']; $n1 = "$Firstname $Lastname"; $RankID = $Getrow['RankID']; if ($RankID == '10') { $n2 = "<img src=\"GEN.jpg\" />"; } } Header ("Content-type: image/jpeg"); $image = imageCreateFromJPEG("test.jpg"); $color = ImageColorAllocate($image, 255, 255, 255); // Calculate horizontal alignment for the names. $BoundingBox1 = imagettfbbox(13, 0, 'LithosPro-Regular.otf', $n1); $boyX = ceil((125 - $BoundingBox1[1]) / 2); // lower left X coordinate for text $BoundingBox2 = imagettfbbox(13, 0, 'LithosPro-Regular.otf', $n2); $girlX = ceil((107 - $BoundingBox2[2]) / 2); // lower left X coordinate for text // Write names. imagettftext($image, 12, 0, $boyX+8, 89, $color, 'LithosPro-Regular.otf', $n1); imagettftext($image, 13, 0, $girlX+310, 92, $color, 'LithosPro-Regular.otf', $n2); // Return output. ImageJPEG($image, NULL, 93); ImageDestroy($image); ?> <img src="Image.php?n1=bebe&n2=jake" /> Lenke til kommentar
Runar Skrevet 12. mai 2010 Del Skrevet 12. mai 2010 Hei! Først vil jeg på det sterkeste anbefale deg å sikre koden din. Hvem som helst kan nå uten problemer avbryte databasespørringen din og kjøre egen ondartet kode. Videre bør du lese denne artikkelen (eller søke etter lignende artikler) om vannmerking i PHP, og forhåpentligvis vil du se at vannmerking består av å plassere et bilde over et annet. Høres ikke dette kjekt ut! Du kan også ta en titt på imagecopymerge() i den utmerkede manualen. Lykke til! 1 Lenke til kommentar
Yaricks Skrevet 12. mai 2010 Forfatter Del Skrevet 12. mai 2010 (endret) Se der ja! Det hjelper! Er klarover at det ikke er sikkert. Har bare gjort det slik midlertidig når jeg driver å tester. Har fått til del en av bildet. Nå legger den på bildet slik som den skal, men når jeg da prøver å legge på tekst etterpå, så nekter teksten å skifte farge... Blir bare en mørk blå eller noe slikt... Noen som kan hjelpe? <?php header ("Content-type: image/png"); $n1 = $_GET['PID']; $sig = $_GET['Sig']; include("connect_db.php"); $StuffInfo = mysql_query("SELECT * FROM Signatures WHERE ID=$sig LIMIT 1") or die(mysql_error()); while($Stuffrow = mysql_fetch_array($StuffInfo)) { $Link = $Stuffrow['Link']; } $GetInfo = mysql_query("SELECT * FROM Users WHERE UserID=$n1 LIMIT 1") or die(mysql_error()); while($Getrow = mysql_fetch_array($GetInfo)) { $Firstname = $Getrow['Firstname']; $Lastname = $Getrow['Lastname']; $n1 = "$Firstname $Lastname"; $RankID = $Getrow['RankID']; if($RankID == '10') { $watermarkPath = "ranksmall/GEN.png"; } } $imagesource = "signature/$Link"; $filetype = substr($imagesource,strlen($imagesource)-4,4); $filetype = strtolower($filetype); $watermarkType = substr($watermarkPath,strlen($watermarkPath)-4,4); $watermarkType = strtolower($watermarkType); if($filetype == ".gif") $image = @imagecreatefromgif($imagesource); else if($filetype == ".jpg" || $filetype == "jpeg") $image = @imagecreatefromjpeg($imagesource); else if($filetype == ".png") $image = @imagecreatefrompng($imagesource); else die(); if(!$image) die(); if($watermarkType == ".gif") $watermark = @imagecreatefromgif($watermarkPath); else if($watermarkType == ".png") $watermark = @imagecreatefrompng($watermarkPath); else die(); if(!$watermark) die(); $imagewidth = imagesx($image); $imageheight = imagesy($image); $watermarkwidth = imagesx($watermark); $watermarkheight = imagesy($watermark); $startwidth = (($imagewidth - $watermarkwidth)/2); $startheight = (($imageheight - $watermarkheight)/2); imagecopy($image, $watermark, 6, 73, 0, 0, $watermarkwidth, $watermarkheight); // Font color $color = ImageColorAllocate($image, 255, 255, 255); // Calculate horizontal alignment for the names. $BoundingBox1 = imagettfbbox(13, 0, 'LithosPro-Regular.otf', $n1); $boyX = ceil((125 - $BoundingBox1[1]) / 2); // Write name imagettftext($image, 12, 0, $boyX+8, 89, $color, 'LithosPro-Regular.otf', $n1); // Create the image ImageJPEG($image, NULL, 93); imagedestroy($image); imagedestroy($watermark); ?> <img src="watermark.php?Sig=1&PID=100"> Endret 12. mai 2010 av Yaricks Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå