Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wilterson Garcia

Gerar Imagem e salvar

Recommended Posts

Boa Tarde pessoal..
Fiz um código que gera uma imagem, para assinatura de e-mail, e salva na pasa, na mesma pasta do projeto para efeitos de teste..

o codigo que gera a imagem..

 

geraimg.php

<?php
	
	# Captura nome e e-mail
	$empresa = $_POST['empresa'];
	$nome = $_POST['nome'];
	$funcao =$_POST['funcao'];
	$unidade = $_POST['unidade'];
	
	if($_POST['contato'] != ''){
		$contato = ' | '. $_POST['contato'];
	
		$contato = str_replace("(", "", $contato);
		$contato = str_replace(")", "", $contato);
		$contato = str_replace("-", ".", $contato);
	}
	
function RemoveAcentos($sub){
    $acentos = array(
        'À','Á','Ã','Â', 'à','á','ã','â',
        'Ê', 'É',
        'Í', 'í', 
        'Ó','Õ','Ô', 'ó', 'õ', 'ô',
        'Ú','Ü',
        'Ç', 'ç',
        'é','ê', 
        'ú','ü',
        );
    $remove_acentos = array(
        'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a',
        'e', 'e',
        'i', 'i',
        'o', 'o','o', 'o', 'o','o',
        'u', 'u',
        'c', 'c',
        'e', 'e',
        'u', 'u',
        );
    return str_replace($acentos, $remove_acentos, urldecode($sub));
}

function assinaturaPromova($pessoa){
	
	$empresa = $pessoa['empresa'];
	$file = $pessoa['file'];
	$nome = RemoveAcentos($pessoa['nome']);
	$funcao = RemoveAcentos($pessoa['funcao']);
	$telefone = $pessoa['telefone'];
	$unidade = $pessoa['unidade'];
	
	if(isset($pessoa['contato'])){
		$contato = $pessoa['contato'];
	}
	
	$nomeesp = str_replace(" ", "-", $nome);
	$nomeesp = RemoveAcentos($nomeesp);
	$arquivo = 'Assinatura_' . strtolower($nomeesp) . '.png';
	$path = 'assinaturas-Promova/'.$arquivo;
	# Cabeçalho da Imagem
	header('Content-Type: image/png');

	# Cria uma imagem TRUE COLOR
	# imagecreatetruecolor(width,height)
	$im = imagecreatetruecolor(600,142);
	
	imagealphablending($im, false);
 	imagesavealpha($im,true);
	
	# Cria uma cor
	# imagecolorallocate(imagem, R,G,B);
	$branco = imagecolorallocatealpha($im, 255,255,255,10);
	$cinzaEscuro = imagecolorallocate($im, 120,121,123);
	$cinzaClaro = imagecolorallocate($im, 93,93,93);
	$preto = imagecolorallocate($im, 0,0,0);

	# Preenche o plano de fundo
	imagefill($im, 0, 0, $branco);

	# Proporção do redimensionamento
	$i = 1;

	# Captura a largura e altura da imagem
	list($width,$height) = getimagesize($file);

	# Importa a imagem a ser redimensionada
	$im_raw = imagecreatefrompng($file);

	# Copia uma imagem para dentro da outra
	imagecopyresampled(
		$im,		# Imagem do destino
		$im_raw,	# Imagem da origem
		0,			# Coordenada X do destino
		0,			# Coordenada Y do destino
		0,			# Coordenada X da origem
		0,			# Coordenada Y da origem
		$width*$i,	# Largura no destino
		$height*$i,	# Altura no destino
		$width,		# Largura na origem
		$height);	# Altura na origem
	
	
	$positionArray = imagettfbbox(12.5, 0, 'fonts/MyriadPro-Semibold.otf' , $nome);
	$posicao = 244 + $positionArray[4];
	# Insere um texto com fonte TTF / OTF
	# imagettftext(imagem,tamanho,angulo,x,y,cor,fonte,string)
	imagettftext($im,12.5,0,243.1,75,$cinzaEscuro,'fonts/MyriadPro-Semibold.otf',$nome);
	imagettftext($im,12.5,0,$posicao,75,$cinzaClaro,'fonts/MyriadPro-Regular.otf',' | '.$funcao.' | '.$unidade);
	imagettftext($im,12,0,243.1,92,$cinzaClaro,'fonts/MyriadPro-Regular.otf', $telefone . $contato);
	imagettftext($im,12,0,243.1,110,$cinzaClaro,'fonts/MyriadPro-Regular.otf','www.promovaideias.com.br');

	imagepng($im, $path);
	
	
}

	switch ($empresa) {
		case 'promova':
			switch ($unidade) {
				case 'PR':
					$telefone = "41 3333.7030";
					break;
					
				case 'DF':
					$telefone = "61 3383.6030";
					break;
					
				case 'SP':
					$telefone = "41 3333.7030";
					break;
					
				case 'RS':
					$telefone = "51 3024.1520";
					break;
					
				case 'GO':
					$telefone = "62 3275.6778";
					break;
					
				case 'RJ':
					$telefone = "21 2205.7881";
					break;
			}
			
			# Arquivo da imagem
			$file = 'img/promova.png';
			if(isset($contato)){
				$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => $telefone, 'contato' => $contato, 'file' => $file, 'unidade' => $unidade, 'empresa' => $empresa];
			}else{
				$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => $telefone, 'file' => $file, 'unidade' => $unidade, 'empresa' => $empresa];
			}
			assinaturaPromova($pessoa);
			break;
			
		case 'artcort':
			# Arquivo da imagem
			$file = 'img/artcort2.png';
			if(isset($contato)){
				$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'contato' => $contato, 'file' => $file, 'empresa' => $empresa];
			}else{
				$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'file' => $file, 'empresa' => $empresa];
			}
			assinaturaArtcort($pessoa);
			break;
		
		default:
			# Arquivo da imagem
			$file = 'img/promova.png';
			break;
	}

Em localhost, ele gera a imagem, certinha, e salva na pasta especificada em $path. (assinaturas-Promova/Assinatura_nome-da-pessoa.png).

 

Só que quando o código esta no servidor, ele nao gera a imagem, ou se gera, ele nao esta salvando.. No servidor nao acusa nenhum erro.

ja setei chmod da pasta para 0777 e tbm nada..

 

 

Qualque ajuda é bem-vinda.. :D

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Habilite todas as exibições de erro como mostrado neste tópico. Também comente a linha do header(), assim qualquer mensagem de erro será exibida na tela

 

Execute novamente e veja qual é o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Linha do header comentada..

e erros habilitados..

ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);

e mesmo assim a tela fica em branco.. como se nada tivesse acontecido..

 

rodando esse mesmo código em localhost, ele gera a imagem, do jeito certo..

só no servidor que não..

 

Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código fonte da página em branco...

<html>
  <head>
    <meta name="chromesniffer" id="chromesniffer_meta" content="{"SPDY":-1}">
    <script type="text/javascript" src="chrome-extension://homgcnaoacgigpkkljjjekpignblkeae/detector.js">
    </script>
  </head>

  <body cz-shortcut-listen="true">
  </body>
</html>

e.. o culpado, eu acho..

HTTP header..

 

status code: 525 :/

O que seria esse erro?

 

eu pesquisei mas nao achei nada que ajudasse... :(

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse 525 não pode ser o http status code...

nem o RFC do HTTP tem esse código documentado: https://tools.ietf.org/html/rfc7231

 

esse chromesniffer está estranho. É uma extensão que você usa? Tente desabilitá-la pra testar (ou use uma aba anônima. Acho que ela roda sem as extensões)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na aba anonima o erro muda.. de 525 pra 500..

 

o 525 muito estranho, um print da tela na aba normal

 

 

20hlzrs.png

 

 

 

Esse detector.js e o chromesniffer de fato são por causa da extensao que uso. (appspector)..

 

e um print da tela na aba privada

 

adchn4.png

 

 

Agra, ja verifiquei as permissoes de pastas do projeto, ja tentei (7777, 0777, 2777, 0644), e todas que me indicam..
e mesmo assim continua com esse erro 500. como se nao existisse o arquivo, ou alguma coisa que ele esteja tentando puxar...

as imgs tbm coloquei com permissoes..

 

já nao sei mais o que mudar.. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee.. Resolvido..

 

vi no log do servidor, tava dando erro no array..

ele tava assim, sempre usei nesse formato e dava certo:

$pessoa = ['nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'contato' => $contato, 'file' => $file, 'empresa' => $empresa];

dai troquei para:

$pessoa = array('nome' => $nome, 'funcao' => $funcao, 'telefone' => '41.3083.1053', 'contato' => $contato, 'file' => $file, 'empresa' => $empresa);

e deu certo, gerou a assinatura

 

 

Vlw Beraldo pela sua ajuda..

 

Abraços..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.