Avatar billede mstorgaard Praktikant
18. maj 2007 - 10:18 Der er 9 kommentarer og
1 løsning

Centrering af gd-image

Jeg har et script, som laver nogle knapper, og jeg vil gerne have lidt hjælp til at få teksten centreret.

Koden ser sådan her ud:
<?php
$w = 90;
$h = 15;
$image = imagecreate($w, $h);
$black = imagecolorallocate($image, 0, 0, 0);
$bg = imagecolorallocate($image, 255, 255,255);
imagefilledrectangle ($image, 0, 0, $w, $h, $black);

$black = imagecolorallocate($image, 0, 0, 0);

$font = "design/verdana.ttf";

$text2 = $_GET['text'];
$changetext = array('ae' => 'æ', 'oe' => 'ø', 'aa' => 'å');
$text = strtr($text2, $changetext);
ImageTTFText($image, 8, 0, 5, 11, $bg, $font, $text);

header("Content-type: image/png");
imagepng($image);
?>
Avatar billede hmm10 Nybegynder
18. maj 2007 - 13:09 #1
Måske kan du bruge:
http://dk.php.net/manual/da/function.imagettftext.php > post: "01-Apr-2005 11:18"
Avatar billede lolman Nybegynder
19. maj 2007 - 10:41 #2
du finder ud af tekstens bredte. ex. 70

knappens bredte ex 90 minus 70

altså 90-70 = 20

så siger du 20/2 = 10 fra venstre side...

altså så hele scriptet bliver noget lign.

<?php
$w = 90;
$h = 15;
$image = imagecreate($w, $h);
$black = imagecolorallocate($image, 0, 0, 0);
$bg = imagecolorallocate($image, 255, 255,255);
imagefilledrectangle ($image, 0, 0, $w, $h, $black);

$black = imagecolorallocate($image, 0, 0, 0);

$text2 = $_GET['text'];
$changetext = array('ae' => 'æ', 'oe' => 'ø', 'aa' => 'å');
$text = strtr($text2, $changetext);
$font = "design/verdana.ttf";
$fontwidth = imagefontwidth($font)*strlen($text);
$trin_to = $w-$fontwidth;
$trin_tre = $trin_to/2;

ImageTTFText($image, 8, $trin_tre, 5, 11, $bg, $font, $text);

header("Content-type: image/png");
imagepng($image);
?>
Avatar billede mstorgaard Praktikant
30. maj 2007 - 00:22 #3
@lolman
Den centrerer ikke billedet, men den får teksten til at hælde opad, hvis der er under 18 tegn og får teksten til at hælde nedad, hvis der er over 18 tegn.

@hmm10
Kan du prøve at smide eksemplet herind med lidt forklaring?
Avatar billede mstorgaard Praktikant
15. juli 2007 - 23:14 #4
Er det er helt glemt?
Avatar billede hmm10 Nybegynder
16. juli 2007 - 11:01 #5
A trivial function to get right or centre aligned horizontal text: (http://dk.php.net/manual/da/function.imagettftext.php > post: "01-Apr-2005 11:18")

function imagettftextalign($image, $size, $angle, $x, $y, $color, $font, $text, $alignment='L')
{
    $bbox = imagettfbbox ($size, $angle, $font, $text);
    $textWidth = $bbox[2] - $bbox[0];
    switch ($alignment) {
        case "R":
            $x -= $textWidth; break;
        case "C":
            $x -= $textWidth / 2; break;
    }
    imagettftext ($image, $size, $angle, $x, $y, $color, $font, $text);
}

I-og-for-sig det samme som lolman's udregning.
Avatar billede mstorgaard Praktikant
16. juli 2007 - 14:03 #6
Kan problemet i lolman's udregning være at han er kommet til at definere 'angle', som den dynamiske og ikke x-koordinaten?
Avatar billede hmm10 Nybegynder
16. juli 2007 - 17:18 #7
Ja. lolman sætter $trin_tre ind 3. parameter, som er 'angle'.
Avatar billede mstorgaard Praktikant
16. juli 2007 - 17:50 #8
Jeg har fået lolman's eksempel til at virke.

Smid svar (:
Avatar billede mstorgaard Praktikant
25. juli 2007 - 16:55 #9
Nogen der vil have point?
Avatar billede mstorgaard Praktikant
21. august 2007 - 20:54 #10
Skriv i den her tråd, hvis I gerne vil have point, jeg lukker den nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester