Imagem grande para a área de transferência congela o computador

16

Então, eu estava brincando com algumas imagens do mapa de altura e encontrei esta:

http://upload.wikimedia.org/wikipedia/commons/1/15/Srtm_ramp2.world.21600x10800.jpg

Esta imagem é 21600x10800 quando clico com o botão direito do mouse em "copiar imagem" do meu navegador (estou usando o chrome). Ele desacelera meu computador até que ele congele. Depois disso, devo reiniciar. Estou curioso para saber por que isso acontece, presumo que seja o tamanho da imagem, embora seja apenas 6MB quando salvo.

Eu também estou usando o Windows 8.1

    
por Joban Dhillon 21.05.2014 / 21:13

1 resposta

21

'Copiar imagem' copia os dados da imagem não processada, em vez do próprio arquivo de imagem, para a área de transferência.

Os dados da imagem bruta serão 21600 x 10800 x 3 (imagem de 24 bits) = 699,840,000 bytes de dados. São aproximadamente 700 MB de dados que seu navegador está tentando acessar na área de transferência.

O JPEG compacta os dados brutos usando um algoritmo com perdas e pode obter uma boa compactação. Portanto, o arquivo compactado tem apenas 6 MB.

O motivo pelo qual o computador fica lento é que ele provavelmente está enchendo sua memória com pelo menos os 700MB de dados de imagem que seu navegador está usando para mostrar a imagem, outros 700MB (junto com a sobrecarga que a área de transferência incorre) para armazenar na área de transferência e uma quantidade insignificante de poder de processamento para converter a imagem em um formato que pode ser armazenado na área de transferência.

As chances são de que, se você tiver menos de 4 GB ou menos de RAM física, essas cópias dos dados de imagem estão forçando o computador a enviar a memória da página para o arquivo de troca na tentativa de atender às demandas de memória ao mesmo tempo. Isso fará com que os programas e acessos a disco fiquem lentos à medida que eles usam o disco e tentem usar os dados que podem ter sido apenas paginados.

Resumindo: não use a área de transferência para imagens enormes, a menos que você tenha muita memória e um pouco de tempo de sobra.

Como gráficos bonitos? É o que acontece quando carrego essa imagem no Chrome e, em seguida, copio-a para a área de transferência na minha máquina com 12 GB de RAM:

Começa no ponto mais baixo usando 2.8GB de RAM, carregando a imagem até 3.6GB (aproximadamente os 700MB), copiando-a para os picos da área de transferência em 6.3GB de RAM antes de voltar abaixo no 4.5-ish que você esperaria ver para um programa e duas cópias de uma imagem bastante grande.

São impressionantes 3,7 GB de dados de imagem sendo trabalhados no pico, que é provavelmente a imagem inicial, uma quantidade reservada para a área de transferência e talvez um par de buffers de conversão. Isso é o suficiente para trazer qualquer máquina com menos de 8GB de RAM para os joelhos.

Estranhamente, fazer o mesmo no Firefox apenas copia o arquivo da imagem, em vez dos dados da imagem , sem o aumento assustador da memória.

    
por 21.05.2014 / 21:20