Compressão de imagens com PHP

Segurança

PHP

05/12/2016

Fala galera,

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

Arnaldo Arnalado

Curtidas 1

Melhor post

Estevão Dias

Estevão Dias

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;
}
GOSTEI 5

Mais Respostas

Jones Granatyr

Jones Granatyr

05/12/2016

Opa! Dê uma olhada nessa discussão abaixo:

http://pt.stackoverflow.com/questions/54257/como-comprimir-imagens-no-php
GOSTEI 0
Arnaldo Arnalado

Arnaldo Arnalado

05/12/2016

Vlw, pessoal! Resolveu aqui.
GOSTEI 0
Marcio Araujo

Marcio Araujo

05/12/2016

O ideal não seria já inserir as imagens em tamanho reduzido?
GOSTEI 0
Estevão Dias

Estevão Dias

05/12/2016

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.
GOSTEI 2
Marcio Araujo

Marcio Araujo

05/12/2016

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

Estevão Dias

05/12/2016

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.
GOSTEI 2
Marcio Araujo

Marcio Araujo

05/12/2016

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

Diego Silva

05/12/2016

Opa Estevão, que maneiro hein!

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

Uiliam

05/12/2016

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??
GOSTEI 0
POSTAR