Ir para conteúdo

Arquivado

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

Maykel-ctba

Exibir o thumb já criado via PHP (file_exists, image_jpeg)

Recommended Posts

Fala galera,

 

Estou tendo um problema com a performance de um site. Vi que muito do desempenho ruim se dava pela geração de thumbnails (Cada vez que a página era aberta, ele gerava o thumb na hora, sem salvar o arquivo). Para otimizar isso, a seguinte idéia me veio a mente:

 

Pegar esse thumb que é gerado, salvar uma cópia no servidor e exibir a cópia no site, evitando processamento desnecessário.

 

Até aí, beleza, consegui fazer salvar uma cópia no servidor. Minha dúvida é: Como exibo ele via PHP.

 

Tentei usando image_jpeg, mas ele imprime na tela um quadrado branco com uma bordinha. Acho que estou fazendo algo errado.

 

Poderiam me ajudar?

 

thumb.php

<?php

	// * Libs e classes
	require('../lib/vendor/autoload.php');
	use Intervention\Image\ImageManagerStatic as Image;
	
	// * Especificações
	$arquivo = pathinfo($_GET['url']);
	$infoLargura = $_GET['largura'];
	$infoAltura = $_GET['altura'];
	$infoCrop = $_GET['crop'];
	$infoCropDir = $_GET['cropDir'];
	$infoCaminho = $_GET['url'];
	$infoNome = $arquivo['filename'];
	$infoExtensao = $arquivo['extension'];
	$infoQualidade = 80;

	// * Formato de leitura da imagem
	$arquivoNomeThumb = $infoNome;
	$arquivoNomeThumb .= (!empty($infoLargura)) ? "_l-".$infoLargura : "";
	$arquivoNomeThumb .= (!empty($infoAltura)) ? "_a-".$infoAltura : "";
	$arquivoNomeThumb .= (!empty($infoCrop)) ? "_c-".$infoCrop : "";
	$arquivoNomeThumb .= (!empty($infoCropDir)) ? "_cd-".$infoCropDir : "";
	$arquivoNomeThumb .= (!empty($infoExtensao)) ? "_e.".$infoExtensao : "";

	// * Primeiro, verifica se já existe uma imagem no banco com as infos solicitadas
	if(file_exists($_SERVER['DOCUMENT_ROOT']."/upload/imagem/".$arquivoNomeThumb)){
		header('Content-Type: image/jpeg');
		imagejpeg($_SERVER['DOCUMENT_ROOT']."/upload/imagem/".$arquivoNomeThumb);
		imagedestroy($_SERVER['DOCUMENT_ROOT']."/upload/imagem/".$arquivoNomeThumb);
	}

	// * Caso não exista, faz uma imagem e exibe ela
	else{
		
		$img = Image::make($infoCaminho);
		
		if(isset($infoCrop) && $infoCrop == true){
			if(isset($infoCropDir)){
				$img->fit($infoLargura,$infoAltura,null,$infoCropDir);
			}
			else{
				$img->fit($infoLargura,$infoAltura);
			}
		}
		else{
			$img->resize($infoLargura, $infoAltura, function ($constraint){
				$constraint->aspectRatio();
			});
		}
		
		$img->save($_SERVER['DOCUMENT_ROOT'].'/upload/imagem/'.$arquivoNomeThumb); // * salva uma cópia
		echo $img->response($infoExtensao, $infoQualidade); // * Exibe a primeira vez só. Depois, não precisará mais passar por esta rotina.
		
	}
	
?>

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.