2011-12-11 12 views

risposta

0

un'occhiata a questa pagina: http://www.imagemagick.org/ImageMagick-7.0.0/script/conjure.php (3 ° esempio)

Il Conjure binario consente di eseguire gli script basato su XML scritti in Magick Scripting Language (MSL). Questi possono utilizzare il comando "query-font-metrics" dei messaggi IM, che non sembra essere disponibile dagli altri binari.

0

questo è davvero in ritardo, ma, da PHP.net:

Usando:

Imagick :: queryFontMetrics - Restituisce una matrice che rappresenta le metriche di carattere

come questo:

// Set font. 
     $font = PATH/TO/YOUR/CUSTOM/FONT 
    // Get dimensions. 
    // Create a new Imagick object. 
     $imTest = new Imagick(); 

    // Create an ImagickDraw object. 
     $drawTest = new ImagickDraw(); 

    // Set the font. 
     $drawTest->setFont($font); 

    // Set the local X and Y. 
     $localX = 0; 
     $localY = 0; 

    // Dump the font metrics, autodetect multiline 
     for ($i = 0; $i < strlen($yourText); $i++) { 
     if ($yourText[$i] === ' ') { 
      $tempX += $imTest->queryFontMetrics($drawTest, $yourText[$i])['textWidth']; 
     } else { 
      $tempX += $imTest->queryFontMetrics($drawTest, $yourText[$i])['originX'] + $imTest->queryFontMetrics($drawTest, $yourText[$i])['boundingBox']['x2'] + $imTest->queryFontMetrics($drawTest, $yourText[$i])['boundingBox']['x1']; 
     }  
     } 

Dove:

characterWidth and characterHeight - Questi sembrano essere correlati alla dimensione specificata per il carattere e non sembrano differire da font a font (alla stessa dimensione). Come tali, non sono particolarmente utili (per me, almeno). Non sono un indicatore affidabile di quanto spazio il font utilizzerà.

ascender - L'ascender è la parte del carattere che si trova sopra la linea di base. Non è correlato al carattere - il valore di ascender è lo stesso per ogni carattere nel carattere.

discensore - Il discensore è la parte del carattere che si trova sotto la linea di base. È rappresentato come una cifra negativa. Aggiungendo i valori assoluti del montante e il discensore ti dà il ...

textHeight - Questa è l'altezza totale disponibile per il carattere. È uguale per ogni carattere nel carattere indipendentemente dal suo caso o da quanto spazio occupa il personaggio . Può essere utilizzato per determinare l'altezza della linea durante l'emissione di paragrafi, ecc.

textWidth - Questo valore varia da carattere a carattere e corrisponde alla larghezza del carattere. Questo è utile se boundingBox non fornisce valori utilizzabili (vedere boundingBox sotto). Quando si posizionano i caratteri uno da - non utilizzare textWidth, utilizzare OriginX (vedere di seguito).

maxHorizontalInvance - Ho paura di non aver capito lo scopo di questo. È lo stesso per ogni carattere nel carattere.Per il carattere Arial Italic a taglia 67, il valore è 89 che è molto più largo dell'anticipo riportato per M o W alle stesse dimensioni.

boundingBox - Restituisce un array associativo che descrive i quattro punti (x1, y1, x2, y2) di un rettangolo che contiene il carattere. Questi valori sono relativi all'origine (ovvero le coordinate di dove si è che traccia il carattere all'interno di un'immagine). Il rettangolo restituito è molto preciso e racchiude completamente tutte le parti del carattere stampato - ma il boundingBox funziona solo su singoli caratteri. Non fornirà cifre esatte di per più personaggi (nella mia esperienza comunque). Quando si disegna una scatola è necessario AGGIUNGERE valori "x" all'origine e SOTTRAI valori "y" dall'origine. Non puoi fare affidamento sul boundingBox per il carattere SPACE. Restituisce un boundingBox di (0,0,0,0). textWidth (vedi sopra) è utile qui.

origineX e origineY- questi sono erroneamente denominati. I valori restituiti in origineX e originY sono in realtà advanceX e advanceY. Questi valori forniscono la posizione del carattere successivo rispetto a quella corrente.

E poi si può generare l'immagine con il vostro testo come questo:

// Generate image. 
    $cmd = 'convert -size ' . $localX . 'x' . $maxY . ' xc:none -gravity Center -font ' . $font . ' -pointsize ' . $fontSize . ' -annotate +0+0 "' . $yourText . '" ' . FINAL/PATH/TO/YOUR/FILE.png'; 
    $r = shell_exec($cmd); 
Problemi correlati