Avatar billede donslund Nybegynder
21. juni 2012 - 14:05 Der er 16 kommentarer og
1 løsning

Fonte og Imagemagick

Jeg kan ikke få ImageMagick til at skrive tekst på mine billeder.

Andre IM-ting virker fint.

Jeg forsøger, at få listet tilgængelige fonte med

system('/usr/local/bin/safe/identify -list Font');

Men den viser ingenting.

system('/usr/local/bin/safe/identify -list type'); viser fint en liste, men jeg kan ikke få vist fonte.

Kan jeg tjekke tilgængelige fonte på en anden måde?
Avatar billede michael_stim Ekspert
21. juni 2012 - 14:20 #1
Ved ikke om det hjælper:

http://www.imagemagick.org/Usage/#font
Avatar billede donslund Nybegynder
21. juni 2012 - 14:30 #2
convert -list font viser heller ingenting.
Avatar billede olebole Juniormester
21. juni 2012 - 14:52 #3
<ole>

"WARNING: If the font requested is not found, ImageMagick will silently substitute a default font, which is usually very plain looking (Arial or Times). So test the font before hand, to make sure that it is the one you want, and not the default."

Så du burde vel få skrevet noget ud under alle omstændigheder(?)

Du kan prøve at kikke i bruger-mail-listerne - f.eks. denne mail

/mvh
</bole>
Avatar billede HBP2 Praktikant
22. juni 2012 - 12:07 #4
Kunne du ikke forklare hvordan du kalder ImageMagick? Er det kommandoen "convert" eller noget andet? Hvilke argumenter?
Avatar billede donslund Nybegynder
24. juni 2012 - 22:23 #5
$command = "convert $caption_bg -font courier -fill white -pointsize 20 -annotate +50+50 'Flower' $caption_path_name";
exec("$command");

Så burde $caption_path_name være mit nye billede.

Men nej :-(

Er der en måde at få fejl udskrevet på i PHP?
Avatar billede olebole Juniormester
24. juni 2012 - 22:44 #6
Hvad betyder:

Så burde $caption_path_name være mit nye billede.

Men nej :-(
?

Betyder det, at $caption_path_name ikke indeholder noget, eller indeholder et bille, der ikke er skrevet på?
Avatar billede donslund Nybegynder
24. juni 2012 - 22:56 #7
$caption_path_name er tom hvis man udskriver det før exec($command) men skulle jo gerne være et billede når kommandoen er udført.
Avatar billede olebole Juniormester
25. juni 2012 - 00:06 #8
"men skulle jo gerne være et billede når kommandoen er udført" >> hvilket præcist er det, der fik mig til at spørge, som jeg gjorde. Gør det det?
Avatar billede olebole Juniormester
25. juni 2012 - 02:15 #9
Undskyld, nu har jeg lige læst, hvad du skriver, igen. Sådan:

$caption_path_name = $_SERVER['DOCUMENT_ROOT'].'foo.png';
$command = "convert $caption_bg -font courier -fill white -pointsize 20 -annotate +50+50 'Flower' $caption_path_name";
exec("$command");

Så ligger billedet foo.png i roden af sitet
Avatar billede donslund Nybegynder
25. juni 2012 - 08:30 #10
Jeps, det gør det, men der er bare ikke skrevet noget derpå.

Er det muligt at lave et dump af eventuelle errors i koden?
Avatar billede HBP2 Praktikant
25. juni 2012 - 09:04 #11
Fejlene fra exec() forsvinder hvis du ikke piper dem ud i en fil og læser filen, f.eks.:
  exec("convert x.png y.png 2> /tmp/myfile");
eller noget i den stil.

Hos mig bruger imagemagick fonte som er i pakken "gsfonts" - fontene ligger i /usr/share/fonts/type1/gsfonts/
Avatar billede donslund Nybegynder
25. juni 2012 - 10:18 #12
Men burde jeg ikke kunne se tilgængelige fonte med noget ala

convert -list font

Den giver ingenting. Hvorimod

convert -list type

giver en lang række af noget der ligner farveprofiler eller noget.
Avatar billede HBP2 Praktikant
25. juni 2012 - 10:38 #13
Hvis der ikke er nogen fonte, så viser
  convert -list font
vel ingenting; istedet for at bare at angive et symbolsk navn (courier) når du vælger font, har du så prøvet at angive et fuldt sti navn til en font? Det burde osse virke, og så behøver fonten ikke at være "installeret" i et bestemt katalog som er kendt af imagemagick.
Avatar billede donslund Nybegynder
25. juni 2012 - 11:50 #14
Jeg er simpelthen nødt til at have et hint til hvordan jeg fortæller ImageMagick at dne skal bruge en bestemt font.
Alt andet en det med skrift lader til at virke.
Avatar billede olebole Juniormester
25. juni 2012 - 12:25 #15
Eksemplet i #9 kræver, at Courier ligger ved siden af dokumentet med koden. Ellers skal du skrive stien til skriften. Dem kan udbyderen have lagt, hvor somhelst, så prøv først at få koden til at virke med en skrift, du selv lægger på serveren. Spørg derefter din udbyder, hvor skrifter til brug i IM er installeret
Avatar billede donslund Nybegynder
25. juni 2012 - 12:30 #16
er det bare font.otf der skal ligge der?
Avatar billede olebole Juniormester
25. juni 2012 - 12:46 #17
Brug f.eks. Mistral.ttf - eller hvad du nu kan finde på din PC
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

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