Compressão de imagens com PHP

05/12/2016

0

Fala galera,

Alguém sabe como eu faço para comprimir imagens no PHP, remover metadados e talz?
Arnaldo Arnalado

Arnaldo Arnalado

Responder

Post mais votado

06/12/2016

Olá Arnaldo,

Na verdade essa é uma questão muito comum que pode não só ajudar a poupar espaço no seu servidor como também aumentar a segurança, porque no processo de compressão todo e qualquer conteúdo introduzido no arquivo de imagem será destruído.

O código abaixo faz a recriação da imagem utilizando uma qualidade fornecida e as funções de imagem otimizadas disponíveis no PHP. Você precisa checar se a extensão de processamento de imagem (GD) está habilitada no seu servidor - http://php.net/manual/pt_BR/image.installation.php

function compress($source, $destination, $quality) {

	$info = getimagesize($source);

	if ($info['mime'] == 'image/jpeg') 
		$image = imagecreatefromjpeg($source);

	elseif ($info['mime'] == 'image/gif') 
		$image = imagecreatefromgif($source);

	elseif ($info['mime'] == 'image/png') 
		$image = imagecreatefrompng($source);

	imagejpeg($image, $destination, $quality);

	return $destination;
}

Estevão Dias

Estevão Dias
Responder

Mais Posts

06/12/2016

Arnaldo Arnalado

Vlw, pessoal! Resolveu aqui.
Responder

06/12/2016

Marcio Araujo

O ideal não seria já inserir as imagens em tamanho reduzido?
Responder

06/12/2016

Estevão Dias

Olá Marcio,

Eu acho que o ponto mais importante aqui não é somente a compressão, reduzindo a qualidade em um nível aceitável, mas também a remoção de código malicioso durante a recriação da imagem.

Existe uma técnica pela qual o hacker consegue enviar um arquivo comprimido dentro da imagem, fazendo o arquivo de imagem de contêiner. Assim ele consegue colocar um script executável dentro do seu servidor. Nesse processo de recriação e compressão esse conteúdo extra é destruído restando apenas a imagem.
Responder

07/12/2016

Marcio Araujo

Então você aconselha a compressão? Realmente não sabia dessas possibilidades de invasão com as imagens.
Responder

07/12/2016

Estevão Dias

Eu acho necessário, Márcio. Segurança nunca é demais ;)

Eu já ouvi relatos, de sites especializados no assunto, de código bash incluído em imagens que é rodado após o upload para a criação de scripts. Obviamente não é qualquer pessoa que consegue fazer esse tipo de coisa, mas quanto mais portas fecharmos melhor.

Estamos preparando um curso aqui na DevMedia sobre segurança em aplicativos PHP que vai cobrir esse e mais assuntos. Fique ligado.

Um abraço.
Responder

07/12/2016

Marcio Araujo

Segurança é algo critico que requer o maximo de atenção, mas nunca pensei nessas possibilidades! Um curso será muito bem vindo!
Responder

08/12/2016

Diego Silva

Opa Estevão, que maneiro hein!

Essa parada de segurança é uma coisa que realmente pode passar despercebida em muitos sistemas
Responder

01/04/2020

Uiliam

Olá. Estou finalizando um site com um programador preguiçoso e estou querendo achar um plugin que limite o upload das imagens em 72dpis para aliviar o site. Ele me fala que só existe plugin para limitar um percentual da imagem, ou seja: se subo uma imagem de 300dpi ela sobe com 240pdi e não 72dpis como eu gostaria.

pode me auxiliar??
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar