A imagem grande na á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), diminui a velocidade do computador até congelar. Depois disso, devo reiniciar. Estou curioso para saber por que isso acontece, presumo que seja do tamanho da imagem, apesar de ter apenas 6 MB quando salva.

Eu também estou usando o Windows 8.1

Joban Dhillon
fonte

Respostas:

21

'Copiar imagem' está copiando os dados brutos da imagem, em vez do próprio arquivo de imagem, para a área de transferência.

Os dados brutos da imagem 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 cutucar na área de transferência.

O JPEG compacta os dados brutos usando um algoritmo com perdas e pode obter uma compressão muito boa. 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 dados de imagem de 700 MB que o navegador está usando para mostrar a imagem, outros 700 MB (junto com o que a área de transferência incorre) para armazená-la no computador. área de transferência e uma quantidade não insignificante de poder de processamento para converter a imagem em um formato que possa 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 da imagem estão forçando o computador a paginar a memória para o arquivo de troca na tentativa de atender as duas demandas de memória ao mesmo tempo. Isso fará com que os programas e os acessos ao disco sejam lentos, pois eles usam o disco e tentam usar os dados que podem ter sido paginados.

Em resumo: 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.

Gosta de gráficos bonitos? É o que acontece quando carrego a imagem no Chrome e a copio na área de transferência da minha máquina com 12 GB de RAM:

insira a descrição da imagem aqui

Ele começa no ponto mais baixo usando 2,8 GB de RAM, carregando a imagem perfura-a até 3,6 GB (aproximadamente talvez 700 MB) e, em seguida, copia-a para a área de transferência com 6,3 GB de RAM antes de voltar para o 4,5-ish que você esperaria ver em um programa e duas cópias de uma imagem bastante grande.

São dados impressionantes de 3,7 GB 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 deixar qualquer máquina com menos de 8 GB de RAM de joelhos.

Estranhamente, fazer o mesmo no Firefox apenas copia o arquivo de imagem em vez dos dados da imagem sem a assustadora onda de memória.

Mokubai
fonte
Mokubai tem o direito disso. Essa imagem faria a maioria das pranchetas do computador surtar. Se você precisar obter essa imagem em um local, salve-a ou clique com o botão direito do mouse e use o comando "Copiar local da imagem".
TorpedoBench
Eu tinha um amigo fazendo isso no Windows 7. Ele relatou apenas um atraso de 1 a 3 segundos. Eu só preciso perguntar a ele qual navegador e quanta RAM.
Joban Dhillon
Sim. Na minha máquina, foi quase instantâneo, mas tenho uma quantidade bastante grande de RAM. Se você tiver menos de 8 GB, não ficaria surpreso se sua máquina estivesse com dificuldades.
Mokubai
@Mokubai: Não estou totalmente convencido. Não seria necessário baixar um arquivo de 700 MB para obter 700 MB para a área de transferência? E, como eu experimentei, esse arquivo é definitivamente menor que 700 MB.
shortstheory 30/05
11
@shortstheory, o arquivo em si tem apenas 7 MB, mas é altamente compactado, pois é uma imagem jpg. Os dados reais da imagem são aproximadamente 700mb. O que você vê no download de 7mb é uma representação compactada da imagem; para qualquer programa realmente exibir a imagem, ela deve ser descompactada primeiro e são esses dados (não o arquivo em si) que estão sendo colocados na área de transferência.
Mokubai