Compactação de Arquivos

E ai galerinha do Locomotech? Aqui estou eu de novo com mais um artigo para transformar o computador em um bicho com menos cabeças e mais processadores (espero que a esta altura tenha só umas 5 e não 7, hahahahaha)!!! Bom quem acompanhou os últimos artigos entendeu um pouco melhor como funcionam os arquivos que estão em seu computador, mas enquanto falávamos sobre extensões de arquivos, acabamos falando de um outro assunto que é muito comum em relação aos formatos e que não me aprofundei para conversamos sobre ele neste artigo. Hoje vamos falar então de compactação de arquivos.
Para começar acho importante a gente definir o que é compactar. Embora o conceito de compactação na informatica não muda absolutamente nada em relação ao conceito geral, compactar nada mais é do que fazer algo ocupar menos espaço. No caso de objetos do nosso cotidiano estaríamos falando de espaço físico propriamente dito, mas no caso da informática trata-se de ocupar menos bytes dentro da HD. Logicamente que no caso da informática, dependendo do tipo de compactação, ela precisa ser reversível.
Mas qual é a importância da compactação ? Como já conversamos nos artigos anteriores, principalmente os de imagens, áudio e vídeo, a compactação serve para diminuir os arquivos, deixando-os de tamanhos que podem ser armazenados em computadores pessoais e permitindo a transmissão dos mesmo e diversos tipos de mídias tanto entre dispositivos, por USB, bem como na rede mundial de computadores, onde seria impossível o download em formatos sem compactação.
Ah beleza, mas até ai, como esta parada funciona? Como é possível fazer os bits sumirem de um arquivo? Na verdade os bits não somem. E pra isto que servem o algoritmos de compressão ou compactação, como preferir. Um algoritmo de compressão nada mais é que um série de linhas de comando que procura no arquivo original por sequências repetidas de informação, as inserindo em um dicionário de redundâncias e substituindo-as no conteúdo do arquivo pelo índice deste dicionario, ou seja, compactar arquivos é um simples processo de substituição, onde pegamos grandes conjuntos de informações e a substituímos por um único numero, por exemplo, cada letra ou simbolo em textos utilizam 8 bits,sendo assim representa 256 caracteres, ou seja, a quantidade prevista pelo ASCII. Numa imagem utilizamos também combinações de bits para representar os pontos de cada cor, como no caso do .BMP de 8 bits. As linhas de comando de um arquivo executável, podem ser interpretados como texto e sempre e muitos comandos se repetem. São estas sequencias de informação tornam possível a compressão.
Para deixar mais claro vamos a um exemplo: Considere a imagem abaixo, tendo as dimensões de 660 X 365 pixel:
Vamos considerar que cada pixel da imagem ocupe um byte, ou seja, 8 bits, representando uma cor. Você notou que na imagem a cor mais predominante é o preto. vamos dizer que poderíamos separar um quadrante de 8 pixels da imagem, composta apenas desta cor e colocar toda esta cadeia de bits no dicionário, substituindo-o apenas pelo índice 1 em cada ocorrência deste quadrante. Toda vez que o índice for colocado no lugar destas redundâncias estaríamos conseguindo diminuir em 7 bytes o tamanho do arquivo, já que 1 byte é mais que suficiente pra representar números entre 1 e 256. Levando em consideração suas dimensões, esta imagem ocuparia cerca de 240900 bytes, ou 235kB, mas com a compressão o mesmo arquivo fica com apenas 84kb. Se abrirmos o paint e salvarmos um arquivo em .BMP com apenas um quadrado de uma única cor, com as dimensões 640 X 480, em 24 bits, teremos 900kB. Mas se este mesmo for comprimido, ele provavelmente ficará com cerca de 3 a 5 kB, sendo que não chega a 1% do original.
Este acima foi apenas um exemplo, mas conforme foi explicado na série sobre formatos de arquivos, existe uma infinidade de esquemas de compressão divididos entre “lossless” ou “sem perdas de dados” e lossy ou “com perda de dados”.
Os esquemas lossless geralmente são utilizados por programas de compactação e alguns formatos de mídia que tem compressão sem perda de qualidade. UM bom exemplo de mídias que utilizam o lossless são, em imagem, o .PNG em algumas formas de salva-lo, em áudio, o PCM e em vídeo o MPEG-4 AVC. Essas são os formatos que servem e contêiner para algum algoritmo de compressão, ou seja, já tem compressão nativa.
No caso ainda da compactação lossless, também existe a compactação realizada pelos compactadores de arquivos, que é um compactação não nativa que pode ser aplicada a qualquer arquivo ou conjunto de arquivos. Os formatos mais conhecidos são os listados abaixo e esta divididos em duas modalidades: com suporte completo que permitem adicionar editar e extrair e os que permitem só a extração.
Os arquivos dentro dos formatos de compactação não nativa precisam ser descompactados para serem utilizados, ou seja, compactação não nativa é um processo reversível. Isto não acontece com os formatos nativos que podem ser utilizados normalmente.
Já os formatos lossy em geral tem um algorítimo que ocasiona um leve perda de qualidade no geral são todos nativos. Um bom exemplo de arquivos com compactação lossy em imagens é o .JPG e no áudio é o .MP3. Este algoritmo de compressão lossy geralmente leva em consideração perdas insignificantes de qualidade, como considerar apenas um cor numa imagem que tem várias tonalidades da mesma nas imagens e eliminar frequências de sons inaudíveis ao ouvido humano no caso do áudio.
Bom galera! Por hoje é isto. Fiquei antenados que muito mais coisa serão explicadas nesta coluna. Até o próximo artigo! Fuuuiii!