Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Giihh

Imagettfbbox

Recommended Posts

Olá,

 

Estou tentando colocar limites para um texto na imagem, pra não passar e não ficar texto cortado na imagem.

Então estou tentando colocar "enters" automaticos.

 

Nas funções do GD existe a opção: imagettfbbox, conforme manual PHP:

 

 

 

Descrição
array imagettfbbox ( float $size , float $angle , string $fontfile , string $text )

Esta função calcula e retorna uma caixa com os limites de um texto para uma fonte TrueType.

Parâmetros size

O tamanho da fonte em pixels

angle

O ângulo em graus no qual text será medido

fontfile

O nome do arquivo de fonte TrueType (Também pode ser uma URL). Dependendo de qual versão da biblioteca GD que o PHP esta usando, ele pode tentar procurar por arquivos que não comecem com '/' adicionando '.ttf' ao nome do arquivo e procurando nos caminhos definidos pela biblioteca de fonte

text

A string a ser medida

 

Minha duvida esta nos valores do angulo, como calcular???

$text = 'Aqui varias palavras para serem cortadas em linhas quando chegar no limite da imagem';
$font_size = 12; // Font size is in pixels.
$font_file = 'OpenSans-Bold.ttf'; // This is the path to your font file.
$image_width = 300;
$image_height = 170;


$space = imagettfbbox($font_size, 0, $font_file, $text);

O zero na função imagettfbbox é onde devo informar o angulo, mas como faço pra medir esse angulo em relação as medidas das variaveis $image_width e $image_height ??

 

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

De acordo com o manual essas são as possibilidades para definir quais são os angulos do imagettfbbox

 

0 Canto inferior esquerdo, posição X
1 Canto inferior esquerdo, posição Y
2 Canto inferior direito, posição X
3 Canto inferior direito, posição Y
4 Canto superior direito, posição X
5 Canto superior direito, posição Y
6 Canto superior esquerdo, posição X
7 Canto superior esquerdo, posição Y

 

 

Entendi assim:

(1 y) -------------- (5 y)
    |                |
    |                |
    |                |
    |                |
    |                |
    |                |
 (0 x) ------------ (4 x)   

1 canto inferior esquerdo y
5 canto superior direito y
0 canto inferior esquerdo x
4 canto superior direito x

Então essa parte fiz assim:

$texto = 'Aqui varias palavras que devem estar em linhas quando chegar no limite da imagem';
$font_size = 12; // Font size is in pixels.
$font_file = 'OpenSans-Bold.ttf'; // This is the path to your font file.

$box = imagettfbbox($font_size, 0, $font_file, $texto);

$image_width = abs($box[4] - $box[0]);
$image_height = abs($box[5] - $box[1]);

Pelo que entendi até aqui determinei o local dos angulos, dentro do box do texto. Mas ai para realmente escrever na imagem preciso usar o imagettftext

 

O angulo que precisa declarar na função imagettftext é relacionado a direção da escrita, então vou deixar 0 para ficar da esquerda para a direita mesmo.

$texto = 'Aqui varias palavras que devem estar em linhas quando chegar no limite da imagem';
$font_size = 12; // Font size is in pixels.
$font_file = 'OpenSans-Bold.ttf'; // This is the path to your font file.

$box = imagettfbbox($font_size, 0, $font_file, $text);

$image_width = abs($box[4] - $box[0]);
$image_height = abs($box[5] - $box[1]);

//criando a imagem e escrevendo com a função imagettftext

  $X = 10;
  $y = 10;
  $imagem = imagecreate(200, 200);
  $fundobranco= imagecolorallocate($imagem , 255, 255, 255);
  $letrapreta= imagecolorallocate($imagem , 0, 0, 0);

  imagettftext($imagem, $font_size, 0, $x, $y, $letrapreta, $font_file, $texto);
  
//x e y são padding que definem em qual lugar da imagem vai começar a escrever

Agora minha dificuldade é fazer com que os angulos da função imagettfbbox trabalhe em conjunto com a medida criada (200x200) na função imagettftext

 

Alguma sugestão de como fazer ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.