Gå til innhold

PHP GD plassering


Anbefalte innlegg

Hei!

 

Jeg klarer ikke å plassere teksten slik jeg vil med GD funksjonen i PHP. Kan noen gi meg et eksempel der tekst er midtstilt på et eksisterende bilde? :)

 

Koden under klarer jeg bare å få justert til slik at teksten blir flyttet horisontalt.

 

<?php

header("Content-type: image/png");
$string = $_GET['text'];
$im	 = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px	 = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);

?>

Endret av Big-Mama
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

Først vil du ha noe til å midtstille tekst på et bilde, og så vil du ha en funksjon for å sette tekst på et bilde ved hjelp av koordinater (altså imagestring). Hva er det du vil ha? OXODesign ga et fint svar synes jeg, men..?

 

Ser koden du allerede har er hentet fra en kommentar på php.net, men om du hadde sett videre hadde du kanskje funnet en eller to kommentarer til som inneholdt kode for dette. ;)

 

Eksempel til to!:

 

Sentreringen er ikke 100%.

<?php
if(isset($_GET['source'])){ show_source(__FILE__); exit; }

header("Content-Type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("imagestringcenter.png");
$color = imagecolorallocate($im, 220, 210, 60);

imageCenterString($im, 3, $string, $color);
imagepng($im);
imageclose($im);



function imageCenterString(&$img, $font, $text, $color)
{
if($font < 0 || $font > 5){ $font = 0; }
$num = array(array(4.6, 6),
			 array(4.6, 6),
			 array(5.6, 12),
			 array(6.5, 12),
			 array(7.6, 16),
			 array(8.5, 16));
$width = ceil(strlen($text) * $num[$font][0]);
$x	 = imagesx($img) - $width - 8;
$y	 = Imagesy($img) - ($num[$font][1] + 2);
imagestring($img, $font, $x/2, $y/2, $text, $color);
}

?>

Kildekode

 

Lenke til kommentar
Gjest Slettet+142

Men da burde jo imagestring funke fint da? :p

 

header("Content-Type: image/png");

$im = imagecreatefrom("images/button1.png");
$color = imagecolorallocate($im, 220, 210, 60);

$text = $_GET['text'];
$y = 5;
$x = 20;

imagestring($im, 3, $x, $y, $text, $color);

imagepng($im);
imagedestroy($im);

Utestet.

Lenke til kommentar
Gjest Slettet+142

Jau, sorry, liten glipp fra meg; glemte png i denne linjen:

$im = imagecreatefrom("images/button1.png");

 

Ny da:

<?php

header("Content-Type: image/png");

$im = imagecreatefrompng("images/button1.png");
$color = imagecolorallocate($im, 220, 210, 60);

$text = $_GET['text'];
$y = 5;
$x = 20;

imagestring($im, 3, $x, $y, $text, $color);

imagepng($im);
imagedestroy($im);

?>

Testet :p

Lenke til kommentar

Takk for oppdatert kode. Desverre vil verken $x eller $y variablene fungere, de endrer ikke på noe :)

 

Noen forslag? :p

 

Edit: Beklager, min feil - Koden fungerer utmerket!

 

Bare èn ting til! Hvordan kan jeg begrense en variables innhold. Altså, hvis innholdet stiger mer en 10 bokstaver så gjør de siste 3 bokstavene til "..." :)

Endret av Big-Mama
Lenke til kommentar

<?php

header("Content-Type: image/png");

$image = imagecreatefrompng("images/button1.png");
$color = imagecolorallocate($image, 220, 210, 60);

imagestring($image, 3, 5, 5, 'This is a text', $color);
imagestring($image, 3, 5, 25, 'This is another text', $color);
imagestring($image, 3, 5, 45, 'This is another text', $color);
imagestring($image, 3, 5, 65, 'This is another text', $color);

imagepng($image);
imagedestroy($image);

?>

 

(Fullstendig utestet, tar forbehold om feil)

Endret av Jonas
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å
×
×
  • Opprett ny...