Imagem

Em um computador, uma imagem é qualquer coisa que possa ser exibida em uma tela ou monitor. Geralmente, dizemos que uma foto é uma imagem, e que um desenho com figuras geométricas também é uma imagem, mas uma imagem pode ser realmente qualquer coisa, incluindo texto, ou até mesmo um vídeo, contanto que esse vídeo não tenha som, já que não tem como "exibir" som em uma tela ou monitor.

Para entendermos isso melhor é preciso entender como a parte gráfica do computador funciona.

A tela do monitor é feita de uma grade com milhões de quadradinhos coloridos dentro dela. Cada quadradinho dessa grade é chamada de pixel. Se um monitor tem uma resolução de 1600 pixels por 900 pixels, isso quer dizer que existem 1.44 milhões de pixels nessa tela.

Cada pixel possui uma cor própria, gerada a partir da adição de três luzes de cores diferentes: vermelho (red), verde (green), e azul (blue). Esse é o sistema de cores RGB. Quando todas essas três luzes estão apagadas, temos o preto, e quando todas estão acesas temos o branco.

Logo, para controlar o que é exibido em uma tela de computador, é necessário enviar para a tela dados que descrevam quais cores cada pixel deve ter, ou seja, qual deve ser a potência de cada uma das três luzes encontradas em cada um dos 1.44 milhões de quadradinhos que a tela possui.

O formato usado nesse caso é chamado de bitmap. Nesse formato, a potência de cada cor é codificada como um byte (8 bits). Um byte é capaz de representar um número de 0 a 255 (ou 00 a FF em hexadecimal). Isso significa que quando uma luz está em sua potência máxima, seu valor é 255 (100% de um byte). Como há 3 luzes para cada pixel, precisamos de 3 bytes (24 bits) para cada pixel. Como temos 1.44 milhões de pixels (ou 1.44 megapixels), para mudar a imagem da tela inteira, precisaríamos enviar 4.32 megabytes de dados para ela.

Note que a tela do computador precisa ser atualizada com alta frequência, em termos de 60 vezes por segundo (60 hertz). A quantidade de dados total enviada para a tela terá de ser no mínimo 259.2 megabytes por segundo.

O dispositivo encarregado de enviar todos esses dados para a tela é a placa gráfica. A placa gráfica recebe da CPU imagens de vários formatos, e ela é capaz de fazer várias operações nessas imagens includindo transforma-las no formato bitmap que a tela espera receber. Porém, os formatos de imagem que a placa gráfica espera da CPU não são formatos de imagens que costumamos usar no computador, mas sim formatos mais técnicos e que em sua maioria também são bitmap. Isso significa no final das contas é a CPU que tem que converter as imagens que usamos em nosso dia a dia para o formato bitmap que a placa gráfica e a tela suportam.

As imagens de computador que nos seres humanos costumamos usar estão em formatos de imagem como JPG, PNG, GIF, WEBP, SVG, entre outros.

Na maioria dos casos, o trabalho de transformar um formato de imagem para bitmap se trata de descomprimir ele. Isto é, existia uma imagem bitmap de 1600 pixels por 900 pixels, por exemplo, que teria 4.32 megabytes de tamanho. Essa imagem é enorme. Abrimos essa imagem em um editor de imagem, que carrega esses 4.32 megabytes na memória RAM. Salvamos essa imagem como PNG. O formato PNG comprime os dados dos pixels da imagem usando seus algoritmos. O resultado é um arquivo de imagem que tem apenas 200 kilobytes, por exemplo. A placa gráfica não entende esse arquivo. Isso significa que para abrir esse arquivo PNG, a CPU precisa fazer a operação reversa e "expandir" esses 200 kilobytes comprimidos nos 4.32 megabytes do bitmap original que é o formato que a placa gráfica consegue entender. Mais especificamente, os 200 kilobytes salvos no disco rígido são carregados na memória RAM, a CPU converte os dados PNG para 4.32 megabytes de bitmap, deleta os 200 kilobytes de PNG da memória RAM já que já foram convertidos, e envia o bitmap para a placa. O formato JPG e WEBP funcionam na mesma maneira, mas com algoritmos de compreensão de pixels diferentes.

No caso do SVG, a situação é ainda mais complicada. O SVG não é um formato de imagem que simplesmente comprimi os dados dos pixels usando um algoritmo. O SVG é um formato que declara como figuras geométricas, como quadrados, retângulos, linhas, etc., devem ser desenhadas, com que cor, espessura, e assim por diante. Para abrir um arquivo SVG, o computador precisa criar um bitmap em branco e sair desenhando nele figuras geométricas de acordo com o que está especificado do documento SVG. Ao terminar de desenhar, o bitmap resultando é o que é passado para a placa gráfica e que vai para a tela do computador.

De mesma maneira, quando um computador exibe texto na tela, como esse que você está lendo nesse exato instante, a CPU precisa converter esse texto em pixels em um bitmap para a placa gráfica enviar para a tela do computador. No caso de um texto simples, cada letra de texto é gravada no computador usando um único byte. Afinal, existem apenas 26 letras no alfabeto, e um byte é capaz de armazenar um número de 0 até 255. Se o número 0 for a letra "a" e 25 for "z," não precisaríamos de mais de uns 100 números para representar o alfabeto inteiro, letras minusculas, maiúsculas, números, e pontuação. Então, esse "a" como texto é um byte apenas na memória. Mas quando esse "a" é exibido na tela, ele ocupa um espaço, uma área, de muitos pixels. Se ocupar um retângulo de 12 pixels por 16 de altura, isso seriam 192 pixels para fazer um "a" aparecer na tela. 192 pixels, com 3 bytes por pixel, seriam 576 bytes. A letra que usa apenas 1 byte para ser gravada em um arquivo de texto precisa de meio kilobyte para ser exibida como imagem na tela.

Como já deu para entender, independentemente do formato original de um dado, para que esse dado seja exibido na tela do computador, a CPU precisa convertê-lo para uma imagem bitmap de uma forma outra. Qualquer programa de computador, ou aplicativo de celular, possui uma interface gráfica com botões para você clicar e caixas para você digitar. Tudo isso é desenhado pela CPU como pixels. Vídeos que assistimos, ou jogos que jogamos, e até mesmo pequenas animações que ocorrem na tela, são tudo imagens que precisam ser atualizadas constantemente na tela pelo processador.

Já que tudo isso é transformado em uma única imagem que é enviada para a placa gráfica, também é possível pegar os dados dessa imagem e salvá-los no seu disco rígido. Isso é chamado de uma "captura de tela," ou screen capture, screencap, ou screenshot ("sucrinxóti"). Com o apertão da tecla print screen no teclado, você pode copiar a tela do computador para sua área de transferência ou salvar um arquivo de imagem direto no computador. Há como fazer isso em smartphones também, com o aperto de dois botões ao mesmo tempo.

Uma vez que um dado é transformado em imagem, não é fácil obter o dado original novamente. Por exemplo, se você abrir uma página na internet e tirar um screenshot dela, o texto da página estará gravado dentro dessa imagem, mas esse texto estará gavado como pixels, e não no formato de texto que o computador é capaz de entender. O computador não tem como saber que a palavra "página" por exemplo está escrita em uma imagem. Ele simplesmente exibe os pixels. Para converter esses pixels de volta em texto que o computador possa entender, é preciso de um programa de reconhecimento de caracteres (OCR, optical character recognition). Esse programa tentaria adivinhar qual letra do alfabeto gera cada conjunto de pixels de uma imagem. Como pode imaginar, é um programa bem complicado para poder extrair de uma imagem seu texto original.

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *