No artigo anterior, focamos em carregar e manipular imagens com PHP. Aprendemos a girar, redimensionar, dimensionar ou inverter uma imagem. Também aprendemos sobre diferentes filtros e a matriz de convolução. Esses tutoriais também abordaram alguns usos práticos da biblioteca GD, como redimensionar todas as imagens em um diretório ou adicionar marcas d’água em várias imagens de uma só vez.
-
PHP
Manipulando imagens em PHP usando GD
Monty Shokeen
-
PHP
Redimensionar e manipular imagens em PHP (com exemplos)
Monty Shokeen
Além de usar o GD para manipular imagens regulares, também podemos criar nossas próprias do zero. Diferentes funções na biblioteca podem ser usadas para desenhar formas básicas como elipses, círculos, retângulos, polígonos e linhas simples. Com um pouco de matemática, essas formas podem criar bons padrões. Há também funções disponíveis para desenhar texto na imagem renderizada, o que abre muitas possibilidades.
Este tutorial ensinará como desenhar formas básicas em PHP e como renderizar texto usando sua fonte favorita.
Desenhe formas básicas em PHP com GD
Aprenderemos sobre formas básicas nesta seção e, em seguida, abordaremos a espessura da linha, os pincéis e os estilos de linha posteriormente.
Desenhar linhas
Você pode desenhar uma linha reta simples entre dois pontos dados usando o imageline($image, $x1, $y1, $x2, $y2, $color)
função. o $image
parâmetro é um recurso de imagem que terá sido criado anteriormente usando funções como imagecreatetruecolor()
ou imagecreatefromjpeg()
. Nós estaremos usando imagecreatetruecolor()
ao longo deste tutorial para criar novas imagens do zero. A função desenhará uma linha horizontal se $y1
é igual a $y2
. Da mesma forma, ele desenhará uma linha vertical se $x1
é igual a $x2
.
Desenhe Círculos e Arcos
A função imagearc($image, $cx, $cy, $width, $height, $start, $end, $color)
pode desenhar arcos circulares usando $cx
e $cy
como seu centro. o $width
e $height
parâmetros determinam o tamanho do arco em diferentes eixos. o $start
e $end
parâmetros especificam o ângulo inicial e final do arco em graus. Se você quiser desenhar arcos completos de 0 a 360 graus, você pode usar a alternativa imageellipse($image, $cx, $cy, $width, $height, $color)
função.
Desenhar retângulos e polígonos
Você pode desenhar retângulos sobre uma imagem usando o imagerectangle($image, $x1, $y1, $x2, $y2, $color)
função. o $x1
e $y1
valores determinam o canto superior esquerdo do retângulo. o $x2
e $y2
valores determinam o canto inferior direito. Há também um imagepolygon($image, $points, $num_points, $color)
função, que pode criar um polígono com qualquer número de lados ou pontos. o $points
parâmetro é uma matriz onde dois elementos são emparelhados para obter as coordenadas de um ponto específico.
Outra função chamada imageopenpolygon()
foi adicionado ao PHP 7, que não traça uma linha entre o primeiro e o último ponto.
Juntando tudo para criar um desenho
No exemplo a seguir, usamos todas essas funções para criar um desenho de linha com uma cabana, o sol e o chão.
O importante aqui é apenas descobrir o valor de diferentes coordenadas. Eu queria desenhar tudo em relação ao tamanho da imagem original, então usei o $img_height
e $img_width
variáveis para calcular as coordenadas de diferentes pontos.
Controlando a espessura da linha, o estilo e os preenchimentos de cor
A imagem acima tem alguns problemas, como linhas muito finas e sem coloração. Todos esses problemas podem ser corrigidos facilmente usando funções como imagesetthickness()
e imagefilledrectangle()
.
Espessura da linha
o imagesetthickness($image, $thickness)
A função define a espessura das linhas renderizadas ao desenhar retângulos, polígonos, arcos, etc. Por exemplo, definir $thickness
a 5 fará qualquer figura desenhada usando imagerectangle()
, imagearc()
, imagepolygon()
etc. 5 pixels de espessura.
Desenhando Formas Preenchidas
Cada função de desenho também tem uma versão de cor preenchida que preenche essa figura específica com uma determinada cor. Por exemplo, imagefilledrectangle()
preencherá o retângulo desenhado com a cor dada.
Usando pincéis
Uma função GD muito útil é imagesetbrush($image, $brush)
. o $brush
parâmetro nesta função é apenas mais um recurso de imagem que pode ser usado para desenhar linhas. Por exemplo, você pode usar um desenho vetorial transparente de uma flor como pincel para adicionar belos padrões de flores à sua imagem. O trecho de código abaixo foi escrito para usar a imagem de uma nuvem como pincel ao desenhar um ponto. Isso adiciona uma única nuvem em nosso céu.
Encontrei esta imagem de nuvem no Pixabay e a reduzi para um tamanho apropriado para nosso projeto.
O código completo para a imagem da cabana é dado abaixo. Simplesmente adicionamos duas versões de cada figura, uma para desenhar o contorno e outra para preencher a cor.
Este é o resultado final do código PHP GD acima.
Renderizando Texto em Imagens
PHP GD vem com quatro funções diferentes para permitir que você renderize vários caracteres ou apenas um caractere na direção horizontal ou vertical. Essas funções são imagechar()
, imagecharup()
, imagestring()
e imagestringup()
. Todos eles aceitam os mesmos seis parâmetros, então vamos discutir apenas os imagechar()
função aqui.
o $font
parâmetro imagechar($image, $font, $x, $y, $string, $color)
função é simplesmente o tamanho do texto renderizado. Aceita apenas valores inteiros de 1 a 5. O $string
parâmetro é o texto que você deseja renderizar. Se você passar uma string de vários caracteres para as funções char, apenas o primeiro caractere será renderizado na imagem. o imagecharup()
e imagestringup()
As funções renderizarão o texto verticalmente de baixo para cima.
Quando se trata de renderização de texto, as quatro funções que discutimos acima são muito limitadas. Você descobrirá que mesmo o maior valor de tamanho de fonte é muito pequeno para uso normal. Além disso, o texto só pode ser escrito na horizontal e na vertical.
Felizmente, o GD também tem um imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text)
função que pode renderizar o texto em qualquer fonte desejada. o $fontfile
O parâmetro é usado para especificar o caminho para a fonte TrueType que você deseja usar para exibir o texto. o $x
e $y
parâmetros determinam a posição inicial do texto renderizado.
O exemplo a seguir usa todas essas funções para criar alguns efeitos de texto interessantes.
Como você pode ver, renderizamos o mesmo texto com a mesma fonte em posições ligeiramente diferentes para criar alguns efeitos como sombra de texto básico. O importante a ter em mente é que o texto renderizado por qualquer função de texto ocultará completamente o texto abaixo dela em caso de sobreposição. Aqui está a imagem final obtida após a execução do código acima.
Pensamentos finais
O objetivo deste tutorial foi familiarizá-lo com diferentes funções GD para desenhar formas básicas do zero em PHP. Com a ajuda de um pouco de matemática, você poderá usar essas funções para criar formas mais complicadas, como polígonos regulares, retângulos arredondados, etc.
O PHP GD também tem algumas funções muito úteis para renderizar texto em uma imagem. O uso de uma boa fonte garantirá que o texto renderizado não pareça estranho quando colocado em imagens regulares carregadas de diferentes caminhos de arquivo.
Você criou mais efeitos de texto sofisticados em PHP? Por favor, compartilhe-os conosco nos comentários.
Originally posted 2022-05-20 08:16:42.