AnswerBun.com

Criação de imagems com texto 'imagecreate()'

Stack Overflow em Português Asked by Leandro Ferreira on November 3, 2020

Isso vai ser bastante dificil de entender, pelo fato de não ter uma explicação bem dinamica. Tentarei ser o mais claro possivel!

Quero criar um gerador de letras identico a esse:

http://image.prntscr.com/image/359de73d9e0845a7bf0dbd7675ce8a8f.png

Este é o site: http://www.pixelacao.zz.mu/

Porém como tudo comigo tem que ser dificil a criação da imagem deu errado.
não sei onde e nem porque o codigo não executa perfeitamente, e nenhum lugar relata erro.

Revisei o código varias vezes e não consigo achar o erro.

Isto é oque acontece quando executo: http://image.prntscr.com/image/cc41fe8a64bd442f8be94d243a07ab5e.png

<?php

$date = time();
//header("Content-disposition: attachment; filename=$date.png");
header('Content-type: image/png');

error_reporting(10);
$text = $_GET['text'];
$folder = $_GET['folder'];
$spacing = $_GET['space'];
if($spacing == ""){
    $spacing = 0;
}
if($text == ""){
    $text = "Habbo";
    $spacing = -2;
}

if($folder == ""){
    $folder = "wabbo4";
}

if($spacing == ""){
    if($folder == "1"){
        $spacing = 1;
    }
    if($folder == "2"){
        $spacing = 1;
    }
    if($folder == "3"){
        $spacing = -1;
    }
}
$folder = preg_replace("/[^a-zA-Z0-9s]/", "", $folder);
if(!is_dir($folder)){
    $folder = "1";
}

$length = strlen($text);

for($i = 0; $i < $length; $i++){

    $letter = substr($text, $i, 1);
    if($letter == "+"){
        $imgwidth = $imgwidth+5+$spacing;
    }else{
        if (preg_match("/[a-z]/", $letter)) {
            $letterimg = imagecreatefrompng("".$folder."/".$letter.".png"); 
            $letterimgwidth = ImageSX($letterimg);
            $letterimgheight = ImageSY($letterimg);
            $yoffset = 21-$letterimgheight;
            $imgwidth = $imgwidth+$letterimgwidth+$spacing;
        }elseif (preg_match("/[A-Z]/", $letter)){
            $letter = strtolower($letter);
            $letterimg = imagecreatefrompng("".$folder."/".$letter.".png"); 
            $letterimgwidth = ImageSX($letterimg);
            $letterimgheight = ImageSY($letterimg);
            $yoffset = 21-$letterimgheight;
            $imgwidth = $imgwidth+$letterimgwidth+$spacing;
        }else{
            $imgwidth = $imgwidth+5;
        }
    }
}

$imgwidth = $imgwidth-$spacing+1;

$im = imagecreate($imgwidth, $letterimgheight+1);
$overimageheight = $letterimgheight+1;
$background = imagecolorallocatealpha($im, 0, 255, 0, 0);
imagecolortransparent($im, $background);
$xcoord = 1;
for($i = 0; $i < $length; $i++){

    $letter = substr($text, $i, 1);
    if($letter == "+"){
        $xcoord = $xcoord+5+$spacing;
    }else{
        if (preg_match("/[a-z]/", $letter)) {
            $letterimg = imagecreatefrompng("".$folder."/".$letter.".png"); 
            $letterimgwidth = ImageSX($letterimg);
            $letterimgheight = ImageSY($letterimg);
            $yoffset = $overimageheight-$letterimgheight;
            if($letter == "g" || $letter == "j" || $letter == "q" || $letter == "p" || $letter == "y"){
            }
            imagecopy($im, $letterimg, $xcoord, $yoffset, 0, 0, $letterimgwidth, $letterimgheight); 
            $xcoord = $xcoord+$letterimgwidth+$spacing;
        }elseif (preg_match("/[A-Z]/", $letter)){
            $letter = strtolower($letter);
            $letterimg = imagecreatefrompng("".$folder."/".$letter.".png"); 
            $letterimgwidth = ImageSX($letterimg);
            $letterimgheight = ImageSY($letterimg);
            $yoffset = $overimageheight-$letterimgheight;
            imagecopy($im, $letterimg, $xcoord, $yoffset, 0, 0, $letterimgwidth, $letterimgheight); 
            $xcoord = $xcoord+$letterimgwidth+$spacing;
        }else{
            $xcoord = $xcoord+5;
        }
    }
}
header("Content-type: image/png");

imagepng($im); 
imagedestroy($im);

?>

No caso folder seria a pasta onde esta as letras, explicando melhor, o usuario escreve o testo e a folder seria a fonte onde pegaria a letra a,b,c…
space seria o espaço entre as letras por que algumas fontes precisam de um espaço maior.

segue imagem:

http://image.prntscr.com/image/bb8eab9bd39543729de97c456457b8b6.png

O resultado como falei seria o texto formado pelas letras de determinada fonte, porém ele da erro, NÃO RELATA NENHUM ERRO NO PHP.

Preciso dessa ajuda, nunca fui bom com imagecreate();
Espero que tenha sido claro com meu problema.

One Answer

Na verdade não foi muito claro não, na próxima vez tenta melhorar a descrição com imagens, tentativas de falhas e sucesso, casos detalhados de debug, etc...

Enfim, nessa função você deseja inserir um conteúdo (INPUT) e apenas alterar a fonte deste conteúdo ? Se eu estiver correto, fiz um código rapidinho que está auto explicativo, dê uma analisada e qualquer dúvida pergunte.

function generateText() {
    // Getting the values
    var initialText = document.getElementById("initialText").value;
    var finalText = document.getElementById("finalText");
    var fontSource = document.getElementById("fontSource").value;

    finalText.innerHTML = initialText;
    switch (fontSource) {
        case "arial":
            finalText.style.fontFamily = "arial, sans-serif";
            break;
        case "lucida":
            finalText.style.fontFamily = "lucida, sans-serif";
            break;
        case "verdana":
            finalText.style.fontFamily = "verdana, sans-serif";
            break;
    }
}
<input id="initialText" type="text" placeholder="Texto">
<select id="fontSource">
    <option value="arial">Arial</option>
    <option value="lucida">Lucida</option>
    <option value="verdana">Verdana</option>
</select>

<button onclick="generateText()">Alterar fonte</button>
<p id="finalText"></p>
Deseja transformar algum conteúdo da sua página em imagem ? Utilize html2canvas. Resolvendo seu problema ou não, retorne com seu feedback.

Answered by Vitor Gultzgoff on November 3, 2020

Add your own answers!

Related Questions

Como subtrair e somar datas com javascript?

1  Asked on January 27, 2021 by user8811593

   

Quais as principais diferenças entre Dart e TypeScript?

1  Asked on January 26, 2021 by maniero

   

Extrair vários valores de uma variável

1  Asked on January 26, 2021 by rodrigo-zoz

 

restore dump com nodejs

1  Asked on January 25, 2021 by max-rogrio

     

Atribuir retorno de findOne para uma variavel global node Node.js

3  Asked on January 24, 2021 by eduardo-pessoa

   

Atalhos de teclado do VSCode para comentários

1  Asked on January 24, 2021 by gratefullydead

 

Por que fgetc(stdin) não reconhece o fim de um arquivo?

0  Asked on January 23, 2021 by antharie

 

Erro ao criar um objeto servlet

0  Asked on January 21, 2021 by andy-rb

   

Axios retornando HTML de dados, não JSON

1  Asked on January 21, 2021 by carlos-souza

         

Acessar pasta especifica da galeria

2  Asked on January 20, 2021 by juliano-morche

 

meu código não entra na onActivityResult (kotlin)

1  Asked on January 17, 2021 by jos-otavio

     

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP