Gå til innhold

Inkludere ett bilde i ett dynamisk PNG bilde?


Anbefalte innlegg

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
Videoannonse
Annonse

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!

  • Liker 1
Lenke til kommentar

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 av Yaricks
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...