Visualizzazione risultati 1 fino 9 di 9

Discussione: Librerie GD: Scrivere centrato

  1. #1
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito Librerie GD: Scrivere centrato

    ho un piccolo problema con le librerie GD.
    E' possibile poter scrivere su un'immagine però con un allineamento centrato?
    Io scrivo su un'immagine con la funzione:
    Codice PHP:
    imagettftext()
    che mi permette di scegliere anche il FONT da usare nell'immagine, solo che mettendo le coordinate, il testo viene scritto con un'allineamento a sinistra quindi a partire dalle coordinate che ho dato.
    Esiste una funzione che mi faccia scrivere il testo con un allineamento centrale? Io ho raggirato il problema facendo in modo di calcolare la lunghezza della parola e quindi le coordinate da dove iniziare a scrivere, ma non è sempre precisissimo come sistem.
    Chi troppo vuole....vuole LionAlex...

  2. #2
    Ospite Guest

    Predefinito

    non c'è la funzione, devi fare tipo:
    $width = ImageFontWidth(4) * strlen($testo);
    $x = (300 - $width)/2;

  3. #3
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    scusa non ho capito molto bene le funzioni che mi hai consigliato, potresti spiegarmele un po???
    Chi troppo vuole....vuole LionAlex...

  4. #4
    Ospite Guest

    Predefinito

    ma non sono delle funzioni specifiche, devi solo moltiplicare il font per la lunghezza del testo, poi sottrai dalla lunghezza totale dell'immagine questo dato e così facendo ricavi lo spazio che resta, dividi per 2 lo spazio e così centri il testo..scusa ma sto andando a dormire..zzzz...cmq se cerchi anche sul manuale del php ci dovrebbero essere altri esempi..cmq la strada è quella perché non esiste una funzione speicifica "centra testo"
    :)

  5. #5
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Farlimas:
    quello che dici tu è per i font bitmap monospaziati che ha di default GD (orribbbbili ) lui invece sta trattando i true type font (abbiamo la FreeType dopo averla tanto attesa.. usiamola ).

    Citazione Originalmente inviato da lionalex
    Esiste una funzione che mi faccia scrivere il testo con un allineamento centrale? Io ho raggirato il problema facendo in modo di calcolare la lunghezza della parola e quindi le coordinate da dove iniziare a scrivere, ma non è sempre precisissimo come sistem.
    Concettualmente ha ragione Farlimas, non ha senso un "centra testo" in un contesto grafico LIBERO (non come in html che c'è sempre un padre contenitore con una certa larghezza).
    Qui hai davanti una tavolozza vuota, se c'è un margine è la dimensione dell'immagine, ma è relativa, potresti anche scrivere fuori del suo contesto. Vabè non divaghiamo. Insomma non c'è alcun riferimento logico per dire "centra".
    Quindi non è un "raggirare" il problema, o altro work-around, ma è l'unico metodo valido.
    Quindi puoi rispolverare l'altro metodo, ma parli di poca precisione..
    sei sicuro di aver utilizzato bene i parametri che ti restituisce la funzione imagettfbbox:
    http://it.php.net/manual/it/function.imagettfbbox.php

    O meglio hai usato questa no? anche perché è l'unico modo.

    ne abbiamo parlato anche qui, c'è del codice esplicativo:
    http://forum.altervista.org/showthread.php?t=46560
    (occhio, c'è una parte del testo corretta, avevo sbagliato, il codice in basso invece è perfetto)
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  6. #6
    lionalex non è connesso Utente attivo
    Data registrazione
    10-12-2002
    Messaggi
    446

    Predefinito

    Grazie Heracleum
    io non usavo imagettfbbox ma facevo dei calcoli approssimativi tra il numero di lettere per un numero fisso che mi ero ricavato facendo varie prove, per questo non era preciso al 100%, ora dovrebbe andare molto meglio.
    Immagino che la variabile $fsize che usi nel codice che hai scritto nell'altro post, sia la grandezza del carattere che voglio usare...a questo punto dovrebbe essere semplicissimo. Grazie ancora a te e a chi ha contribuito a risolvere questo mio dubbio...
    Chi troppo vuole....vuole LionAlex...

  7. #7
    Ospite Guest

    Predefinito

    vabé ma il problema era centrare il testo, per quello che ne sapevo poteva usare anche le gd inferiori.
    Ho fatto "l'esempio minimo" :) e poi stavo andando anceh a dormire.
    cmq anceh usando Freetype deve ugualmente calcolare la lunghezza dell'immagine ecc...non è che i freetype di siano inventati la funzione centra testo :)

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Sì infatti dicevo che il metodo di calcolo -che hai citato- della coordinata "x" per centrare il testo ( (totw-txtw)/2 ) è quello esatto!
    E' solo che con i ttf nel 90% dei font si hanno appunto larghezze diverse in base ai caratteri usati, quindi tocca affidarsi per forza alle funzioni apposite per ttf.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    Ospite Guest

    Predefinito

    ce l'avevo anceh già fatta una cosa col testo centrato con i freetype...il rettangolino con
    il numeretto con la random...antispam ma ho 345678 cartelle in locale e non trovo + un accidente...se lo trovo magari lo posto..:)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •