Jump to content
Fórum Script Brasil
  • 0

Texto em Imagem


Question

Bom dia a todos. Preciso inserir texto em imagem e consegui, até agora, o script abaixo... Porém preciso setar a fonte, que já está no diretório (tahoma.ttf), mas não sei como...
Poderiam me ajudar?

<?php
// Carregar imagem já existente no servidor
$imagem = imagecreatefromjpeg( "assinatura.jpg" );
/* @Parametros
 * "assinatura.jpg" - Caminho relativo ou absoluto da imagem a ser carregada.
 */

// Cor de saída
$cor = imagecolorallocate( $imagem, , 56, 118 );
$cor2 = imagecolorallocate( $imagem, 108, 169, 56 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * 255 - Cor vermelha ( RGB )
 * 255 - Cor verde ( RGB )
 * 255 - Cor azul ( RGB )
 * -- No caso acima é branco
 */

// Texto que será escrito na imagem
$nome = urldecode( $_GET['nome'] );
$cargo = urldecode( $_GET['cargo'] );
$email = urldecode( $_GET['email'] );
$telefone = urldecode( $_GET['telefone'] );
/* @Parametros
 * $_GET['nome'] - Texto que será escrito
 */

// Escrever nome

imagestring( $imagem, 3, 260, 20, $nome, $cor );
imagestring( $imagem, 4, 260, 40, $cargo, $cor2 );
imagestring( $imagem, 3, 260, 68, $email, $cor );
imagestring( $imagem, 4, 260, 88, $telefone, $cor2 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * 5 - tamanho da fonte. Valores de 1 a 5
 * 15 - Posição X do texto na imagem
 * 515 - Posição Y do texto na imagem
 * $nome - Texto que será escrito
 * $cor - Cor criada pelo imagecolorallocate
 */

// Header informando que é uma imagem JPEG
header( 'Content-type: image/jpeg' );

// eEnvia a imagem para o borwser ou arquivo
imagejpeg( $imagem, NULL, 100 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * NULL - O caminho para salvar o arquivo. 
          Se não definido ou NULL, o stream da imagem será mostrado diretamente. 
 * 80 - Qualidade da compresão da imagem.
 */

 

Edited by marcolib
Link to post
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Olá Stoma, obrigado pela resposta...
Por que a imagem some quando fiz a inclusão? O que estou fazendo de errado?

 

<?php
// Código adaptado por Marco Antônio Gismonte
// Uso exclusivo para assinaturas Libório BrasilBrokers

// Carregar imagem já existente no servidor
$imagem = imagecreatefromjpeg( "assinatura2.jpg" );
/* @Parametros
 * "assinatura.jpg" - Caminho relativo ou absoluto da imagem a ser carregada.
 */

// Cor de saída
$cor = imagecolorallocate( $imagem, , 56, 118 );
$cor2 = imagecolorallocate( $imagem, 108, 169, 56 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * 255 - Cor vermelha ( RGB )
 * 255 - Cor verde ( RGB )
 * 255 - Cor azul ( RGB )
 * -- No caso acima é branco
 */
 
 
 /*Fonte que será usada*/
$font = imageloadfont("tahoma.ttf");

// Texto que será escrito na imagem
$nome = urldecode( $_GET['nome'] );
$cargo = urldecode( $_GET['cargo'] );
$email = urldecode( $_GET['email'] );
$telefone = urldecode( $_GET['telefone'] );

/* @Parametros
 * $_GET['nome'] - Texto que será escrito
 */

// Escrever nome

imagestring( $imagem, 3, 260, 20, $nome, $cor, $font );
imagestring( $imagem, 4, 260, 40, $cargo, $cor2, $font );
imagestring( $imagem, 3, 260, 68, $email, $cor, $font );
imagestring( $imagem, 4, 260, 88, $telefone, $cor2, $font );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * 5 - tamanho da fonte. Valores de 1 a 5
 * 15 - Posição X do texto na imagem
 * 515 - Posição Y do texto na imagem
 * $nome - Texto que será escrito
 * $cor - Cor criada pelo imagecolorallocate
 */

// Header informando que é uma imagem JPEG
header( 'Content-type: image/jpeg' );

// eEnvia a imagem para o borwser ou arquivo
imagejpeg( $imagem, NULL, 100 );
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
 * NULL - O caminho para salvar o arquivo. 
          Se não definido ou NULL, o stream da imagem será mostrado diretamente. 
 * 80 - Qualidade da compresão da imagem.
 */

 

Link to post
Share on other sites
  • 0

Funcionou perfeitamente!

Gostaria de saber como faço, se puder me ajudar lógico, para a imagem ser salva com $nome ao clicar em salvar?

É possível?

O código ficou assim...

 

<?php
	header("Content-type: image/jpeg");
	$im = imagecreatefromjpeg( "assinatura.jpg" );
	$green = imagecolorallocate($im, 108, 169, 56);
	$blue = imagecolorallocate($im, , 56, 118);
  
 
  // Texto que será escrito na imagem
	$nome = urldecode( $_GET['nome'] );
	$cargo = urldecode( $_GET['cargo'] );
	$email = urldecode( $_GET['email'] );
	$telefone = urldecode( $_GET['telefone'] );
  
  // Replace path by your own font path
	imagettftext($im, 10, , 260, 30, $blue, "tahomabd.ttf", $nome);
	imagettftext($im, 10, , 260, 53, $green, "tahoma.ttf", $cargo);
	imagettftext($im, 10, , 260, 79, $blue, "tahomabd.ttf", $email);
	imagettftext($im, 10, , 260, 102, $green, "tahoma.ttf", $telefone);
	imagejpeg($im);
	imagedestroy($im);
?>



 

Link to post
Share on other sites
  • 0

Entendi. Para isso você precisa passar o segundo parâmetro (caminho onde o arquivo será salvo) na função imagejpeg:

// filtra o nome, pois alguns caracteres não são permitidos em nome de
// arquivo, e também sem esse filtro seria possível salvar o arquivo em
// qualquer pasta do servidor (ex: se alguém mal intencionado digita um
// nome como "Marco/../../temp/Teste", // o arquivo seria salvo na pasta temp)
$nomeArquivo = pathinfo($nome, PATHINFO_FILENAME);
$pasta = "/caminho-para-salvar/";
imagejpeg($im, "{$pasta}/{$nomeArquivo}.jpg");

 

Link to post
Share on other sites
  • 0

É possível usar os dois códigos junto?

$nome = str_replace(' ', '', $nome);

e este

$nome = preg_replace("/[^a-zA-Z0-9_]/", "", strtr($nome, "áàãâéêíóôõúüçñÁÀÃÂÉÊÍÓÔÕÚÜÇÑ ", "aaaaeeiooouucnAAAAEEIOOOUUCN_"));

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148875
    • Total Posts
      644917
×
×
  • Create New...