Display Image Within Another

2

Galera So I have this image of card and I need to display another image on the photo of the person, I was able to insert the wanted data of the bank but the photo of the person I can not get from the bank and display on top of that card image

<html><head><metahttp-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>exemplo</title>
    </head>

    <body>
        <img src="ex1.php"  />
    </body>
    </html>

    <?php
    //Inclui a conexao
    require 'conexao.php';

ex1.php

        //Prepara conexão com mysql, classe pdo
        $stm = $pdo->prepare( 'SELECT * FROM ifsp WHERE id = 4' );
        //Executa conexao
        $stm->execute();

        //Tranforma toda pesquisa em uma matriz
        $consulta = $stm->fetch( PDO::FETCH_ASSOC );

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

    // Cor de saída
    $cor = imagecolorallocate( $imagem, 0, 0, 0 );
    /* @Parametros
     * $imagem - Imagem previamente criada Usei imagecreatefromjpeg
     * 0 - Cor vermelha ( RGB )
     * 0 - Cor verde ( RGB )
     * 0 - Cor azul ( RGB )
     * -- No caso acima é preto
     */

    // Texto que será escrito na imagem
    $nome = $consulta['nome_aluno'];
    $rg = $consulta['rg'];
    $prontuario = $consulta['prontuario'];
    $datavalidade = $consulta['data_validade'];
    $curso = $consulta['curso'];
    $periodo = $consulta['periodo'];
    /* @Parametros
     * $_GET['nome'] - Texto que será escrito
     */

    // Escrever nome
    imagestring( $imagem, 5, 220, 750, $nome, $cor );
    /* @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
     */
    imagestring( $imagem, 5, 100, 860, $rg, $cor );
    imagestring( $imagem, 5, 100, 925, $prontuario, $cor );
    imagestring( $imagem, 5, 350, 925, $datavalidade, $cor );
    imagestring( $imagem, 5, 220, 620, $curso, $cor );
    imagestring( $imagem, 5, 350, 860, $periodo, $cor );;
    // 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 to display bank image

<?php
// Incluindo arquivo de conexão
require 'conexao.php';

$id = (int) $_GET['id'];

// Selecionando fotos
$stmt = $pdo->prepare('SELECT conteudo, tipo FROM ifsp WHERE id = :id');
$stmt->bindParam(':id', $id, PDO::PARAM_INT);

// Se executado
if ($stmt->execute())
{
    // Alocando foto
    $foto = $stmt->fetchObject();

    // Se existir
    if ($foto != null)
    {
        // Definindo tipo do retorno
        header('Content-Type: '. $foto->tipo);

        // Retornando conteudo
        echo $foto->conteudo;
    }
}
    
asked by anonymous 13.10.2015 / 20:20

1 answer

1

Since all the data is in the same table ( ifsp ) you can add the photo to the card image that you created using imagecopyresampled (without translation) , thus eliminating the need to overlap the two images.

...
imagestring( $imagem, 5, 350, 860, $periodo, $cor );

$foto = imagecreatefromstring($consulta['conteudo']); // cria imagem
imagecopyresampled(
  $imagem, // destino
  $foto, // origem
  $posicao_x, // posição X na carteirinha
  $posicao_y, // posição Y na carteirinha
  0, // posição X na origem
  0, // posição Y na origem
  $largura, // largura desejada na carteirinha
  $altura, // altura desejada na carteirinha
  imagesx($foto), // largura da origem
  imagesy($foto) // altura da origem
);

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