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.
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>
Answered by Vitor Gultzgoff on November 3, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP