Image Generator Does Not Work [closed]

0
<pre>
<code>    
<?php
$tamanhofonte = 100;
// Fonte de código de barras que eu tenho em um sistema
$fonte = 'c39hrp48dhtt.ttf';

// Texto que será impresso na imagem
// Para que funcione com leitores é necessário
// que seja iniciado e finalizado a String com o caracter '*'
$texto = "*" . $_GET['nome'] . "*";

// Retorna o tamanho da imagem criada pela fonte acima carregada.
$tamanho = imagettfbbox($tamanhofonte, 0, $fonte, $texto);
$largura = $tamanho[2] + $tamanho[0] + 8;
$altura = abs($tamanho[1]) + abs($tamanho[7]);

// cria a imagem exatamente do tamanho informado pelo imagettfbbox
$imagem = imagecreate($largura, $altura);
/* @Parametros
 * $largura - Largura que deve ser criada a imagem
 * $altura - Altura que deve ser criada a imagem
 */

// Primeira chamada do imagecolorallocate cria a cor de fundo da imagem
imagecolorallocate($imagem, 255, 255, 255);

// As demais chamadas criam cores para serem usadas na imagem
$preto = imagecolorallocate($imagem, 0, 0, 0);

// Adiciona o texto a imagem
imagefttext($imagem, $tamanhofonte, 0, 0, abs($tamanho[5]), $preto, $fonte, $texto);
/* @Parametros
 * $imagem - Imagem previamente criada Usei imagecreate.
             poderia ter usado o imagecreatefromjpeg
 * $tamanhofonte - Tamanho da fonte em pixel
 * 0 - Posição X do texto na imagem
 * 0 - Posição Y do texto na imagem
 * abs($tamanho[5]) - Corrige o Y
 * $preto - Cor do texto
 * $fonte - Caminho relativo ou absoluto da fonte a ser carregada.
 * $texto - Texto que deverá ser escrito
 */

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

// eEnvia a imagem para o borwser ou arquivo
imagejpeg( $imagem, NULL, 80 );
/* @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.
 */
?>
</code>

This code was to generate a barcode for Reader but it gives an error like: The image "file" can not be displayed because contained errors.

Could someone help?

    
asked by anonymous 11.02.2017 / 20:57

1 answer

1

There is no error in the code, as I mentioned above. However, I assume, in sheer whimsy, that the problem is because the font file is not in the specified location, when it says "Barcode font I have in a system" it is not clear if the font is in the said location or if is trying to use a font already installed on the device.

If you specify c39hrp48dhtt.ttf , you should have something like this:

C:.
    c39hrp48dhtt.ttf
    teste.php

In this way teste.php can read the font you specified in $fonte = 'c39hrp48dhtt.ttf'; , since both are in the same directory.

If you want to use an already "installed" source you will need to know where such an installation occurs on your operating system, where the source is.

For Windows the location is C:\Windows\Fonts , you can use %WINDIR%\Fonts to make it easier.

Soon you will be able to use:

$fonte = getenv('windir').'/Fonts/c39hrp48dhtt.ttf';
// Irá utilizar C:/WINDOWS/Fonts/c39hrp48dhtt.ttf

This will consume the font that is already available on your system.

  

Also remove the <pre> and <code> of the code, leaving only PHP, after all you are giving Content-type: image/jpeg .

    
11.02.2017 / 23:03