Avatar billede NielsErikP Mester
31. juli 2011 - 01:29 Der er 10 kommentarer og
1 løsning

Større eller "Bold" Font i imagestring..???

Hej...

Sidder med lidt af et problem som jeg håber i kan hjælpe mig med..!!
Har følgende kode :



$black = imagecolorallocate($im,0,0,0);
imagestring($im, 5, 20, 15, StrToUpper($str3), $black);



Hvordan laver man parameter 5 i imagestring "bold"....
Eller hvordan definerer man parameter 2 til at være større font(den går jo fra 1 til 5)???

Håber der en "HardCore" php mand med lidt hjælp.

På forhånd tak...!!
Avatar billede danco Nybegynder
31. juli 2011 - 12:14 #1
imagettftext  ( resource $image  , float $size  , float $angle  , int $x  , int $y  , int $color  , string $fontfile  , string $text  )

ovenstående syntax gør det muligt for dig at formatere text i GD lib.
Avatar billede kjeldsted Novice
31. juli 2011 - 12:22 #2
Som #1 er inde på skal du have fat i imagettftext da du hér, selv kan vælge font-fil og derved blot vælger en bold font.
Avatar billede NielsErikP Mester
31. juli 2011 - 21:54 #3
Hej..
Kigger lige lidt på #1.......
Parameter 7 string $fontfile... skal man selv definere Fontene eller hvorledes fungere det..

Vender frygteligt tilbage ;-)
Avatar billede kjeldsted Novice
31. juli 2011 - 22:17 #4
Du skal ligge en fontfil op på din server rent fysisk, og så angive stien til denne i forhold til PHP filen med imagettftext funktionen. Og som navnet angiver skal det sjovt nok være en TTF fil.
Avatar billede NielsErikP Mester
31. juli 2011 - 22:51 #5
Hej..
Jo... Det gør jeg så
Kiggede lige på  imagettftext  ( resource $image  , float $size  , float $angle  , int $x  , int $y  , int $color  , string $fontfile  , string $text  ) på phpnet. Kunne se parameter 2 er lidt forskellig efter hvilken version af GD man bruger.. Jeg tog lige en phpinfo på mit system  :


[gd]

---------------------------------
GD Support

enabled
---------------------------------


GD Version

bundled (2.0.34 compatible)
---------------------------------


FreeType Support

enabled
---------------------------------


FreeType Linkage

with freetype
---------------------------------


FreeType Version

2.4.3
---------------------------------


GIF Read Support

enabled
---------------------------------


GIF Create Support

enabled
---------------------------------


JPEG Support

enabled
---------------------------------


libJPEG Version

6b
---------------------------------


PNG Support

enabled
----------------------------------


libPNG Version

1.2.44
----------------------------------


WBMP Support

enabled
----------------------------------


XBM Support

enabled
----------------------------------


Er der hjælp til hvilken version  mit SYST kører med???

#4:
Og lidt dumt spurgt måske, men hvor finder man, skaffer man sådan en TTF fil???
Avatar billede danco Nybegynder
01. august 2011 - 00:25 #6
#4
man behøver ikke en font fil på serveren, det er en mulighed hvis man ønsker at lave specielle ting eksempelvis CAPTHCA eller lign.

Jeg tror godt du kan regne med at 2. parameter er størrelsen på skriften.
Avatar billede NielsErikP Mester
01. august 2011 - 00:43 #7
Hej...
Det var lige imagettftext() jeg skulle bruge, fandt så en font på nettet, gratis ttf font!! Men det er squ alt for gnidret og ulæseligt, må se om jeg kan finde noget andet!!

#6:
Har fundet ud af at det er skrift størrelsen, men grunden til jeg spørger er at hvis du kører GD1 er den i pixels og GD2 i points.. hmmm.. nå det finder jeg nok ud af.

Det er netop en CAPTCHA jeg prøver at fabrikere, så hvordan fungere det uden TTF font... Er det så den normale font der bare bliver større med 2. parameter.
Avatar billede danco Nybegynder
01. august 2011 - 01:19 #8
Med netop CAPTCHA er det vigtigt at du bruger netop TTF font. Hvis du ikke gør det vil den gøre brug af en standard font som samtlige OCR robotter i verden kan genkende. Derudover det er det essentielt at du her har muligheden for at vinkle teksten direkte.
Jeg smider et forenklet og kort eksempel på én af de CAPTCHA jeg bruger i øjeblikket.

for($i = 0; $i<rand(0, 6);$i++){
    $color = imagecolorallocate($captcha, rand(0,255), rand(0,255), rand(0,255));
    imageline($captcha, rand(0,($imageWidth/2)), rand(0,($imageHeight/3)), rand(15,$imageWidth), rand(10,$imageHeight), $color);
}
imagettftext($captcha, rand(9,45), rand(5,45), 15, 63, imagecolorallocate($captcha, rand(0,255), rand(0,255), rand(0,255)), 'font2.ttf', $first);

I ovenstående kan du se at jeg først tegner et tilfældigt antal linjer i tilfældig farve og dernæst tegner jeg det første tegn i min String. Og sådan fortsætter jeg til alle mine tegn er skrevet.  Bemærk venligst at du BØR bruge tilfældige værdier i sådanne ting. Dog skal du bare sikre dig at de ligger indenfor et givent område.
Avatar billede NielsErikP Mester
01. august 2011 - 22:51 #9
Hej... danco

Tusind tak for eksemplet, har selv følgende  :



// Sætter start/end- Værdierne  til tegne en linje og tegner 2 tilfældige linjer....
$white = imagecolorallocate($im,255, 255 , 255);
$startX = $_GET['X1'];
//$startX = mt_rand(6,57);
//$endX  = $width/4;
$endX = $_GET['X2'];
$startY = mt_rand(6,10);
$endY  =  $height-5;

$startX2 = $startX + $startX;
$endX2 = $endX + $startX;
$startY2 = $startY;
$endY2 = $height-5;
imageline($im, $startX, $startY, $endX, $endY, $white);
imageline($im, $startX+1, $startY, $endX+1, $endY, $white);

imageline($im, $startX2, $startY2, $endX2, $endY2, $white);
imageline($im, $startX2+1, $startY2, $endX2+1, $endY2, $white);


// Sætter Min/Max- Værdi for bredde og højde på Images'et, sætter max antal pletter
// der skal tegnes og tegner det antal pletter på images'et........
$maxAntalPlet = mt_rand(6,11);

for ($AntalPlet = 0; $AntalPlet <= $maxAntalPlet; $AntalPlet++) {
    $minWid = mt_rand($width-$width , $width-3);
    $maxWid = $minWid + 3;
    $minHeight = mt_rand($height-$height, $height-3);
    $maxHeight = $minHeight + 3;

    for ($x= $minWid; $x<= $maxWid; $x++) {
        for($y= $minHeight; $y<= $maxHeight; $y++) {
            imagesetpixel($im, $x, $y, $FarvePlet);
        }
    }
}



Kommentarene siger,hvad der sker.

Bruger Imageline 4 gange for jeg havde lidt problemer med at få den funktion til at virke i en "For-løkke", så ville den simpelthen ikke vise mit image, bare en firkant med det velkendte røde kryds.

Et lille spørgsmål, Er den "font2.ttf" til at finde, eller er det egen fabrikation???
Avatar billede danco Nybegynder
02. august 2011 - 15:20 #10
Font2 er blot stien til den font fil jeg har på serveren, det kan være hvilken som helst fint du måtte ønske.
Der ligger tusindvis af den slags fonte på nettet som du kan downloade og bruge frit. Der er således ingen forskel på om du vil bruge fonten på din computer til tekstbehandling eller om du bruger den her.
Avatar billede NielsErikP Mester
03. august 2011 - 00:23 #11
Hej...
Okay... Tak for oplysningen.
Tror jeg må sige tak for hjælpen danco..
Krydser dig af i dit tidligere svar og så er pointene dine :-)
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