/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Mere tekst i billede
Fra : Lasse Hedegaard


Dato : 18-04-01 15:06

Hejsa!

Hvordan får jeg scriptet her til at se ud som billedet nedenunder?

Script:
<http://fergusons.dk/fdf/40.php?textfield=Vi+tester+scriptet+her%2C+kan+det+lade+sig+g%F8re+med+spalter%3F>

Ønsket resultat:
<http://fergusons.dk/fdf/40b.jpg>

Og hvis teskten er længere end en enkelt spalte, så det ryger ned over
første side, så skal teksten bare fortsættes på side 2...

Og hvordan tjekker jeg, at al teksten kan være på siden (når tegnene i
skriften ikke har ens bredde), og giver en fejlbesked hvis der er for
meget tekst?

venligst,
Lasse Hedegaard

--
Skal du have fjeret SIM-låsen på din Nokia-telefon?
- Eller installeret vibrator og ekstra spil i Nokia 3210?
- Kontakt mig, så finder vi ud af det.

 
 
Johan (18-04-2001)
Kommentar
Fra : Johan


Dato : 18-04-01 15:57

> Hvordan får jeg scriptet her til at se ud som billedet nedenunder?
>
> Script:
>
<http://fergusons.dk/fdf/40.php?textfield=Vi+tester+scriptet+her%2C+kan+det+
lade+sig+g%F8re+med+spalter%3F>
>
> Ønsket resultat:
> <http://fergusons.dk/fdf/40b.jpg>
>
> Og hvis teskten er længere end en enkelt spalte, så det ryger ned over
> første side, så skal teksten bare fortsættes på side 2...
>
> Og hvordan tjekker jeg, at al teksten kan være på siden (når tegnene i
> skriften ikke har ens bredde), og giver en fejlbesked hvis der er for
> meget tekst?

En lille utestet ide...
$saeting = "Vi tester scriptet her, kan det lade sig gøre med spalter.";
$width = "200"; //Bredden på spalten
$words = split(" ", $saetning);
$numberofwords = count($words);
$wordnumber = 0;
$writewords = "";

for($i = 0; $i <= $numberofwords; $i++) {
$oldwords = $writewords;
$writewords = $writewords." ".$words[$i];
$wordsize = ImageTTFBBOX($fontsize, 0, $fontname, $writewords);
$wordwidth = abs($wordsize[2]) - abs($wordsize[0]);
if(($width < $wordwidth) && ($oldwords != "")) {
//skriv ImageTTFText som normalt med oldwords som variabel! husk at
ligge return til en variabel
$i -= 1;
$oldwords = "";
$writewords = "";
break;
}
elseif($width < $wordwidth) && ($oldwords == "") {
//skriv writewords, desværre er denne for stor, men består kun af en
//del, så den kan ikke være anderledes
$oldwords = "";
$writewords = "";
break;
}
}

Håber den vil hjælpe... den er skrevet på 10 minutter, så er ikke ret sikker
på dens funktionalitet, men ellers kan den sikker give dig en masse gode
ideer til at komme videre...

Der er taget udgangspunkt i at du bruger TTF fonte.... skriv endelig hvis
der er problemer... så kan jeg hjælpe dig i morgen... smutter for nettet om
lidt og slapper af

/Johan



Lasse Hedegaard (18-04-2001)
Kommentar
Fra : Lasse Hedegaard


Dato : 18-04-01 16:14

Johan skrev:

>En lille utestet ide...

Jeg kan slet ikke gennemskue koden :)

>$saeting = "Vi tester scriptet her, kan det lade sig gøre med spalter.";
>$width = "200"; //Bredden på spalten
>$words = split(" ", $saetning);

Deler alle ordene ud i et array...

>$numberofwords = count($words);

Antal ord i arrayet.

>$wordnumber = 0;
>$writewords = "";

>for($i = 0; $i <= $numberofwords; $i++) {
> $oldwords = $writewords;
> $writewords = $writewords." ".$words[$i];
> $wordsize = ImageTTFBBOX($fontsize, 0, $fontname, $writewords);
> $wordwidth = abs($wordsize[2]) - abs($wordsize[0]);
> if(($width < $wordwidth) && ($oldwords != "")) {

Og her står jeg af...

>Der er taget udgangspunkt i at du bruger TTF fonte....

I do...

>skriv endelig hvis
>der er problemer... så kan jeg hjælpe dig i morgen... smutter for nettet om
>lidt og slapper af

Jeg kunne godt bruge lidt mere specifikt kode, eller information. Jeg
kan ikke gennemskue det du har her :)

Tak for hjælpen so far...

venligst,
Lasse Hedegaard

--
Skal du have fjeret SIM-låsen på din Nokia-telefon?
- Eller installeret vibrator og ekstra spil i Nokia 3210?
- Kontakt mig, så finder vi ud af det.

Johan (19-04-2001)
Kommentar
Fra : Johan


Dato : 19-04-01 08:17

> >for($i = 0; $i <= $numberofwords; $i++) {
> > $oldwords = $writewords;
> > $writewords = $writewords." ".$words[$i];
> > $wordsize = ImageTTFBBOX($fontsize, 0, $fontname, $writewords);
> > $wordwidth = abs($wordsize[2]) - abs($wordsize[0]);
> > if(($width < $wordwidth) && ($oldwords != "")) {
>
> Og her står jeg af...

ImageTTFBBOX finder størrelsen af den definerede sætning.
$wordwidth finder bredden af den del af ord.
If sætningen finder ud af om sætningen er over de $width, hvis den ikke er
det ligger den endnu et ord til, indtil den er for lang. Når den er for
lang, tager den $oldwords og skriver, da det er den sidste, der kunne være
på bredden!

Dog hvis oldwords er tom, skriver den istedet det for lange ord, da der ikke
er andre muligheder. Det vil dog kun ske ved ord der er bedrere end de 200
pixel, f.eks. TÆNDSTIKSÆSKEINDPAKNINGSDAME eller ligende!

mvh

Johan



Johan (19-04-2001)
Kommentar
Fra : Johan


Dato : 19-04-01 08:26

> Jeg kunne godt bruge lidt mere specifikt kode, eller information. Jeg
> kan ikke gennemskue det du har her :)
>
> Tak for hjælpen so far...

Lidt svært at skrive en specifik kode som du kan bruge. Synes nu ikke selv
min kode var svært at gennemskue. Men vil nødig sidde og skrive en kode
direkte til dit brug, da det for det første vil tage et godt stykke tid.

Prøv at kigge på kompononterne i koden, og træk dem ud, og se om det giver
mening.

Ellers kan jeg da lave det for en 100 kr, af principielle årsager, eller en
god flaske vin, så det virker
Dog skal du aldrig regne med det bliver 100% præcist!

mvh

Johan



Lasse Hedegaard (19-04-2001)
Kommentar
Fra : Lasse Hedegaard


Dato : 19-04-01 09:52

Johan skrev:

>Lidt svært at skrive en specifik kode som du kan bruge. Synes nu ikke selv
>min kode var svært at gennemskue. Men vil nødig sidde og skrive en kode
>direkte til dit brug, da det for det første vil tage et godt stykke tid.

Helt forståeligt...

>Prøv at kigge på kompononterne i koden, og træk dem ud, og se om det giver
>mening.

Jeg prøver... :)

venligst,
Lasse Hedegaard

--
Skal du have fjeret SIM-låsen på din Nokia-telefon?
- Eller installeret vibrator og ekstra spil i Nokia 3210?
- Kontakt mig, så finder vi ud af det.

Nezar Nielsen (18-04-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 18-04-01 16:15

"Lasse Hedegaard" <laxxe@nospam.dk> skrev i en meddelelse
news:7f7rdtc1brjtvca8pn9091ervkihkifi1b@news.inet.tele.dk...
....
> Og hvis teskten er længere end en enkelt spalte, så det ryger ned over
> første side, så skal teksten bare fortsættes på side 2...

Det er ikke så lige til.

Jeg tror at hvis du skulle gøre det, og det skulle virke 100%, så ville du
blive nød til at for hver fontstørrelse, for hver font, finde bredden på
hvert tegn(samt mængden af plads før og efter tegnet), og så smider det hele
ind i en stor ligning der regner ud for dig, hvor meget af en given
tekststreng, der er plads til på x pixels..

> Og hvordan tjekker jeg, at al teksten kan være på siden (når tegnene i
> skriften ikke har ens bredde), og giver en fejlbesked hvis der er for
> meget tekst?

Leger med ovenstående og http://dk.php.net/manual/function.imagettfbbox.php

Jeg tror aldrig du vil finde en perfekt løsning, medmindre du begynder at
lave en masse udregninger med ord-delinger, tegnbredde og deslige - eller
finder en eller anden hemmelig text2postscript2jpg løsning..

--
Mvh. Nezar Nielsen
http://fez.dk/




Lasse Hedegaard (18-04-2001)
Kommentar
Fra : Lasse Hedegaard


Dato : 18-04-01 16:17

Nezar Nielsen skrev:

>> Og hvis teskten er længere end en enkelt spalte, så det ryger ned over
>> første side, så skal teksten bare fortsættes på side 2...
>
>Det er ikke så lige til.

OK, men hvordan får jeg så i første omgang teksten til kun at fylde X
pixels i bredden, og hvis den er større, så gå ned på næste linie, og
næste linie igen osv...

venligst,
Lasse Hedegaard

--
Skal du have fjeret SIM-låsen på din Nokia-telefon?
- Eller installeret vibrator og ekstra spil i Nokia 3210?
- Kontakt mig, så finder vi ud af det.

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste