Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [GD] ricavare altezza di un font (o di una scritta png)

    Ciao
    dovrei ricavare l'altezza di una scritta. La scritta viene generata medinate la consueta funzione imagettftext.

    - Ci potrebebbe essere un modo per fare cioò: usare la funzione imageftbbox, ma questa presenta un "bug": non funziona con le lettere che si sviluppano sotto la baseline (come per esempio: j y).
    Ne avevo accennato in questa discussione, sperando di risolvere il problema.

    - Cercando su php.net ci sono funzioni interessanti tipo imagefontwidth e imagefontheight. Non avendole mai utilizzate chiedo se queste funzioni (in particolare la seconda) possono risolvere il mio problema.

    - Un'ultima soluzione possibile è creare un'algoritmo che analizzi i pixel dell'immagine. Magari se non ci sono alternative, appena ho tempo realizzo l'algoritmo e lo posto (QUESTO solo se non ci sono alternative alle funzioni di default del php)



    Ecco un esempio per capire meglio il mio problema:

    Semplicemente devo ricavare l'altezza della scritta (nell'esempio, per altezza intendo l'altezza dalla punta bassa della y alla testa della R)


    grazie anticipatamente!

    ciao ciao

  2. #2
    Ecco l'algoritmo (si fa per dire) che calcola l'altezza delle scritte in immagini PNG:

    Codice PHP:
    <?php

    /* PRE CONDIZIONE: la PNG deve avere uno sfondo a tinta unita, 

     * non sfondi sfumati o a più colori

     */

    $bg = array(232,237,241); // inserire lo sfondo (RGB)

    $img_URI 'test.png';    // URI immagine (PNG)

    $im imagecreatefrompng($img_URI);

    list(
    $width$height$type$attr) = getimagesize($img_URI);



    $fine false

    for (
    $y=0; (($y $height-1) && !$fine);$y++) //(1)

     
    for ($x=0; (($x $width-1) && !$fine);$x++) {

      
    $color_index imagecolorat($im$x$y);

      
    $rgb imagecolorsforindex($im$color_index);

      if (!((
    $bg[0] == $rgb[red]) && ($bg[1] == $rgb[green]) && ($bg[2] == $rgb[blue]) ))

       
    $fine true;

    }

    $y--;

    echo 
    "POST CONDIZIONE (1): \$y contiene la coordinata y di inizio match: ".$y."
    "




    if (
    $fine){

     
    $Y $y;    

     
    $fine false;

     for (
    $y=$height-1; (($y>=0) && !$fine);$y--) //(2)

      
    for ($x=0; (($x $width-1) && !$fine);$x++) {

       
    $color_index imagecolorat($im$x$y);

       
    $rgb imagecolorsforindex($im$color_index);

       if (!((
    $bg[0] == $rgb[red]) && ($bg[1] == $rgb[green]) && ($bg[2] == $rgb[blue]) ))

        
    $fine true;

     }

     
    $y++;

     echo 
    "POST CONDIZIONE (2): \$y contiene la coordinata y di fine match: ".$y."
    "
    ;

     
    $h $y-$Y;

     echo 
    "L'altezza della scritta e' di ".$h."px";

    }

    else

     echo 
    "Immagine vuota (senza scritte)!";
    ?>
    Per il mio sito è utilissimo per calcolare la dimensione delle scritte, poi si vedrà se riscuoterà successo qui nel forum (non penso).

    Posto un'immagine di prova - test.png:


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.