Limite a resolução da imagem no upload

Estou correndo em um problema onde uma imagem particularmente enorme está causando o meu servidor VPS para reiniciar devido a problemas de memory. A configuração disto está fora de minhas mãos, é como o failsafe do host.

Eu tenho um VPS com memory de 300M, o que acredito que é suficiente para minha instalação do WordPress, pelo menos com as operações do dia-a-dia.

A imagem que estou carregando não é particularmente grande no tamanho do arquivo (~ 380 kb) e é principalmente preto com letras brancas. No entanto, sua resolução é 4583 * 4583. Quando eu carregá-lo através do WordPress, recebo um erro HTTP na janela de upload, e quando eu vou verificar o site ao vivo, é para baixo por alguns minutos.

Eu queria saber se é possível detectar uma resolução de imagens e impedir que seja carregado. Eu sou inteligente o suficiente para mexer um pouco em um processador de imagem, mas alguns dos meus autores podem não ser inteligentes o suficiente para processar a imagem antes de carregar algo tão grande como este.

Seria ainda melhor se a limitação pudesse ser baseada nas imagens bits por pixel, mas não tenho ideia do que o limite do meu servidor é para isso, então eu acho que uma mensagem de erro dizendo que a imagem não pode ser carregada porque é maior do que, digamos, 2000 * 2000 é suficiente.

Solutions Collecting From Web of "Limite a resolução da imagem no upload"

O problema não é tanto o upload de si mesmo, pois essa é uma conexão de rede entre o cliente e o servidor. Não é o que está comendo a memory do servidor.

Quando o WordPress inicia o ‘cruncing’ nas imagens, é aí que o PHP entra e começa a resize e recortar as imagens carregadas. É antes deste momento que você precisa intervir e executar algumas verificações antes de permitir que o PHP coma sua memory.

Usando o filtro wp_handle_upload_prefilter , você pode conectar uma function que executa qualquer verificação que você gostaria na imagem que está prestes a ser crunched:

 < ?php /* Marc Dingena Utilities * Test image resolution before image crunch */ add_filter('wp_handle_upload_prefilter','mdu_validate_image_size'); function mdu_validate_image_size( $file ) { $image = getimagesize($file['tmp_name']); $minimum = array( 'width' => '400', 'height' => '400' ); $maximum = array( 'width' => '2000', 'height' => '2000' ); $image_width = $image[0]; $image_height = $image[1]; $too_small = "Image dimensions are too small. Minimum size is {$minimum['width']} by {$minimum['height']} pixels. Uploaded image is $image_width by $image_height pixels."; $too_large = "Image dimensions are too large. Maximum size is {$maximum['width']} by {$maximum['height']} pixels. Uploaded image is $image_width by $image_height pixels."; if ( $image_width < $minimum['width'] || $image_height < $minimum['height'] ) { // add in the field 'error' of the $file array the message $file['error'] = $too_small; return $file; } elseif ( $image_width > $maximum['width'] || $image_height > $maximum['height'] ) { //add in the field 'error' of the $file array the message $file['error'] = $too_large; return $file; } else return $file; } ?> 

Para um plugin, tente http://wordpress.org/plugins/imsanity/ e isso ajudará a manter outros usuários do site ao carregar imagens que são muito grandes.

A imansidade redimensiona automaticamente os enormes carregamentos de imagens para um tamanho que é mais razoável para exibir no navegador, mas ainda mais do que grande o suficiente para o uso típico do site. O plugin é configurável com uma largura, altura e qualidade máxima. Quando um contribuidor carrega uma imagem maior do que o tamanho configurado, Imsanity irá dimensioná-la automaticamente para o tamanho configurado e replace a imagem original.

É possível que seu servidor tenha memory suficiente para executar a tarefa, mas que a configuração do limite de memory do PHP é muito baixa para o trabalho de conversão de imagens muito grandes.

Tente configurar memory_limit no php.ini mais alto.

 memory_limit=256M 

* Nota: esta pode não ser uma solução adequada em alguns ambientes de hospedagem.