Em que consiste uma imagem bmp? Veja o que é "BMP" em outros dicionários

BMP é um formato de imagem popular sem compactação de dados. Vejamos quais programas você pode usar para visualizar fotos com esta extensão.

Provavelmente muitos já adivinharam que como o formato BMP é usado para exibir imagens, você pode visualizar o conteúdo desses arquivos usando visualizadores de imagens e editores gráficos. Além disso, alguns outros aplicativos, como navegadores e visualizadores universais, podem realizar essa tarefa. A seguir, veremos o algoritmo para abrir arquivos BMP usando software específico.

Método 1: Visualizador de imagens FastStone

Vamos começar com o popular visualizador de imagens FastStone Viewer.


Método 2: IrfanView

Agora vamos dar uma olhada no processo de abertura de um BMP em outro visualizador de imagens popular, o IrfanView.


Método 3: XnView

O próximo visualizador de imagens no qual veremos a abertura de um arquivo BMP é o XnView.


Método 4: Adobe Photoshop

Agora vamos descrever o algoritmo de ações para resolver o problema descrito em editores gráficos, começando pelo popular aplicativo Photoshop.


A principal desvantagem deste método é que o aplicativo Photoshop é pago.

Método 5: Gimp

Outro editor gráfico que pode exibir BMP é o Gimp.


Comparado com o método anterior, este beneficia do facto de a aplicação Gimp não exigir pagamento pela sua utilização.

Método 6: OpenOffice

O editor gráfico Draw, incluído no pacote OpenOffice gratuito, também dá conta dessa tarefa com sucesso.


Método 7: Google Chrome

Não apenas editores gráficos e visualizadores de imagens podem abrir BMP, mas também vários navegadores, por exemplo, o Google Chrome.


Método 8: Visualizador Universal

Outro grupo de programas que podem funcionar com BMP são os visualizadores universais, que incluem o aplicativo Universal Viewer.


Método 9: pintar

Os métodos para abrir BMP usando programas instalados de terceiros foram listados acima, mas o Windows possui seu próprio editor gráfico - Paint.


Método 10: Visualizador de fotos do Windows

O Windows também possui um visualizador integrado apenas de imagens que pode ser usado para iniciar o BMP. Vejamos como fazer isso usando o Windows 7 como exemplo.


Como você pode ver, existe uma lista bastante grande de programas que podem abrir imagens BMP. E estes não são todos, mas apenas os mais populares. A escolha de uma aplicação específica depende das preferências pessoais do utilizador, bem como dos objetivos definidos. Se você só precisa ver um desenho ou foto, então é melhor usar visualizadores de imagens e, para edição, usar editores de imagens. Além disso, até mesmo navegadores podem ser usados ​​como alternativa de visualização. Caso o usuário não queira instalar software adicional no computador para trabalhar com BMP, ele pode usar o software integrado do Windows para visualizar e editar imagens.

Este artigo é sobre a aparência do formato gráfico bmp. Embora este seja um dos formatos mais simples, devido ao facto de existirem muitas variações deste formato, nem todos os pontos são óbvios. Então, pare de derramar água, vamos começar.

Estruturas de formato

O formato bmp (das palavras BitMaP - mapa de bits ou, em russo, matriz de bits) é uma imagem descompactada (principalmente) que é bastante fácil de ler e exibir no sistema operacional Windows, que possui funções API especiais que ajudam.

Primeiro, vamos dar uma representação gráfica dos dados em bmp (foto tirada do MSDN).

No início existe um cabeçalho de arquivo (BITMAPFILEHEADER). É descrito da seguinte forma:

bfType determina o tipo de arquivo. Aqui ele deveria ser BM. Se você abrir qualquer arquivo BMP em um editor de texto (ou melhor ainda, em um editor hexadecimal), verá que os dois primeiros caracteres são BM (da palavra BitMap, como você provavelmente já adivinhou).
bfSizeé o tamanho do próprio arquivo em bytes. A rigor, você deveria calculá-lo (o que é recomendado), mas defini o tamanho do arquivo incorretamente (embora não de propósito :)) e não houve problemas (ACDSee leu sem problemas, meu programa funcionou), mas não recomendo você escreva deliberadamente incorretamente , de repente aparecerá um programa cuidadoso que comparará esse tamanho com o real e decidirá que não é bmp, mas outra coisa. Idealmente, todos os programas, para ter certeza de que se trata de um bmp real e não falso, devem, em primeiro lugar, verificar se bfType contém "BM" (sem aspas) e, em segundo lugar, se bfSize é igual ao tamanho do arquivo.
bfReserved1 e bfReserved2 são reservados e devem ser zero.
bfOffBits. Este é um dos campos mais importantes desta estrutura. Ele mostra onde o próprio bitmap começa em relação ao início do arquivo (ou, como diz o MSDN, “desde o início da estrutura BITMAPFILEHEADER”), que descreve a imagem. Ou seja, para ter certeza de chegar ao início do array você deve escrever:

tag de estrutura typedefBITMAPINFOHEADER
{
DWORD tamanho duplo;
LONGA largura dupla;
LONG biHeight;
PALAVRA biplanos;
PALAVRA biBitCount;
BiCompressão DWORD;
DWORD biSizeImage;
LONGO biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsado;
DWORD biClrImportante;
) BITMAPINFOHEADER, * PBITMAPINFOHEADER;

biSizeé o tamanho da própria estrutura. Ele precisa ser inicializado da seguinte forma: bih.biSize = sizeof(BITMAPINFOHEADER);
Aqui novamente assumiremos que bih é declarado da seguinte forma: BITMAPINFOHEADER bih;
biWidth e biHeight defina a largura e a altura da imagem em pixels, respectivamente.
biplanos especifica o número de planos. Por enquanto está sempre definido como 1.
biBitCount- Número de bits por pixel. Falaremos mais sobre isso a seguir.
biCompressão indica o tipo de compactação. Não fique surpreso ou assustado com o fato de o bmp sofrer compressão repentina. Pessoalmente, não vi mais de um bmp compactado (mas não estou dizendo que eles não existam). Se não houver compactação, esse sinalizador deverá ser definido como BI_RGB. Neste artigo estamos falando do formato descompactado, então nem vou listar outras flags. Parece que a mesma estrutura é usada nos arquivos JPEG e PNG, pois a partir do Windows 98 surgiram as opções BI_JPEG, que mostra que esta imagem é JPEG e BI_PNG, que é PNG (não sei nada sobre o formato Jpeg, Acabei de tirar essas conclusões com base no que está escrito no MSDN).
biSizeImage indica o tamanho da imagem em bytes. Se a imagem estiver descompactada (ou seja, o campo anterior estiver definido como BI_RGB), então um zero deverá ser escrito aqui. biXPelsPerMeter E biYPelsPerMeter denotam, respectivamente, a resolução horizontal e vertical (em pixels por metro) do dispositivo final no qual o bitmap (raster) será enviado. Um aplicativo pode usar esse valor para selecionar em um grupo de recursos o bitmap mais apropriado para o dispositivo desejado. O fato é que o formato bmp é essencialmente um raster independente de hardware, ou seja, quando a aparência do que é obtido não depende de onde esse raster é projetado (por assim dizer). Por exemplo, uma imagem terá a mesma aparência, independentemente de ter sido desenhada na tela de um monitor ou impressa em uma impressora. Mas a resolução dos aparelhos é diferente, e é justamente para selecionar a imagem mais adequada entre as disponíveis que esses parâmetros são utilizados.
biClrUsado determina o número de cores usadas na tabela. Se esse valor for zero, o raster usará o número máximo de cores permitido pelo valor biBitCount. Isso é relevante apenas para imagens compactadas. Se biClrUsed for diferente de zero e biBitCount for menor que 16, então biClrUsed determinará o número atual de cores do mecanismo gráfico ou driver de dispositivo disponível. Se biBitCount for maior ou igual a 16, então biClrUsed determinará o tamanho da tabela de cores usada para otimizar a paleta atual do sistema.
biClrImportante- este é o número de cores importantes. Determina o número de cores necessárias para representar o desenho. Se esse valor for 0 (como normalmente é), todas as cores serão consideradas importantes.

Tipos de formato BMP

Todos os tipos de formato bmp condicionalmente pode ser dividido em dois tipos: paleta e não paleta. Ou seja, se a paleta é utilizada em determinado formato ou não. Observe que a paleta pode até estar em formatos sem paleta, mas não é usada lá. Em bmps sem paleta, a cor é calculada diretamente a partir dos bits que vão no arquivo, começando em um determinado local. E nas paletas, cada byte descreve um ou mais pixels, e os valores dos bytes (ou bits) são o índice de cores na paleta. Para começar, fornecerei uma tabela que compara as opções possíveis. O tipo de imagem (paleta ou sem paleta) depende de quantos bits são dados por pixel, ou seja, do valor biBitCount da estrutura BITMAPINFOHEADER.

biBitCountFormato de paleta ou não paletaNúmero máximo possível de coresNotas 1 Paleta2 Uma imagem de paleta de duas cores, veja bem, não necessariamente preto e branco. Se o bit raster (que está logo abaixo) for redefinido (igual a 0), isso significa que a primeira cor da paleta deve estar neste local e, se definida (igual a 1), a segunda. 4 Paleta16 Cada byte descreve 2 pixels. Aqui está um exemplo do MSDN. Se o primeiro byte da imagem for 0x1F, então ele corresponde a dois pixels, a cor do primeiro é a segunda cor da paleta (porque a contagem regressiva começa em zero) e o segundo pixel é. a 16ª cor da paleta. 8 Paleta256 Uma das opções mais comuns. Mas, ao mesmo tempo, os mais simples. A paleta ocupa um kilobyte (mas é melhor não contar com isso). Um byte é uma cor. Além disso, seu valor é o número da cor na paleta. 16 Sem paleta2 ^ 16 ou 2 ^ 15Esta é a opção mais confusa. Vamos começar com o fato de que ele não tem paleta, ou seja, cada dois bytes (uma palavra WORD) no raster define exclusivamente um pixel. Mas eis o que acontece: existem 16 bits e 3 componentes de cores (vermelho, verde, azul). Mas 16 não quer ser dividido por 3. Portanto, existem duas opções aqui. A primeira é usar 15 bits em vez de 16, então existem 5 bits para cada componente de cor. Desta forma podemos usar no máximo 2^15 = 32768 cores e obter um triplo R-G-B = 5-5-5. Mas aí um pedaço inteiro de 16 é desperdiçado em vão. Mas acontece que nossos olhos, entre todas as cores, percebem melhor o verde, então decidimos dar esse pedaço ao componente verde, ou seja, então obtemos o verde. triplo RGB = 5-6-5, e agora podemos usar 2 ^ 16 = 65536 cores. Mas o mais desagradável é que ambas as opções são utilizadas. O MSDN sugere que para distinguir quantas cores são utilizadas, preencha o campo biClrUsed da estrutura BITMAPINFOHEADER com este valor. Para selecionar cada componente você precisa usar as seguintes máscaras. Para formato 5-5-5: 0x001F para componente azul, 0x03E0 para verde e 0x7C00 para vermelho. Para o formato 5-6-5: 0x001F - azul, 0x07E0 - verde e 0xF800 vermelho, respectivamente. 24 Sem paleta2^24 E este é o formato mais simples. Aqui, 3 bytes definem 3 componentes de cores. Ou seja, um componente por byte. Simplesmente lemos a estrutura RGBTRIPLE e usamos seus campos rgbtBlue, rgbtGreen, rgbtRed. Eles vão nessa ordem. 32 Sem paleta2^32 Aqui, 4 bytes definem 3 componentes. Mas, no entanto, um byte não é usado. Pode ser utilizado, por exemplo, para o canal alfa (transparência). Neste caso, é conveniente ler o raster usando estruturas RGBQUAD, que são descritas a seguir:

Armazenamento de dados em formato bmp

Bem, agora chegamos à parte mais interessante. Depois das estruturas BITMAPFILEHEADER e BITMAPINFOHEADER vem a paleta. Além disso, se o formato for livre de paleta, pode não estar lá, porém, você não deve contar com isso. O fato é que quando eu estava começando a entender o formato bmp, li em um livro que, supostamente, se o formato não tem paleta, então ele não tem paleta nenhuma. Havia até duas imagens - diagramas de formato: uma com paleta e outra sem. E naquela época eu estava escrevendo um programa que operava diligentemente com arquivos bmp. E tive que converter as imagens recebidas de 256 cores para 24 bits (se houver) em arquivos temporários. E eu simplesmente não criei uma paleta em 24 bits (bfOffBits da estrutura BITMAPFILEHEADER era igual à soma de sizeof(BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER), e deixei os de 24 bits recebidos inalterados. Com rasters de 256 cores tudo funcionou como deveria, até que não encontrei uma imagem de 24 bits com lixo exibido na parte inferior, em vez da parte necessária, não entendi imediatamente o que estava errado até comparar o tamanho do arquivo original com o. teórico que deveria estar lá se não houvesse paleta. A diferença acabou sendo exatamente 1 KB (1024 bytes). Portanto, nunca conte se existe uma paleta e não confie em seu tamanho. (embora todas as imagens que encontrei tenham um tamanho de paleta de 256 cores, ou 1Kb), sempre mova o arquivo até o início do raster, usando bfOffBits. A paleta é uma matriz de estruturas RGBQUAD, uma após a outra. nem todas as cores são usadas na paleta (mas apenas, por exemplo, 16), então muitas vezes 256 campos são alocados para a paleta A 256 * 4 = 1024, onde 4 é o tamanho da estrutura RGBQUAD, ou seja, a mesma. um kilobyte é obtido.

Imediatamente após a paleta vem o próprio raster. É aqui que as coisas ficam mais confusas. Primeiramente, os pixels são descritos aqui conforme escrito na tabela acima, dependendo do formato. E eles próprios podem conter o valor dos componentes de cores (para aqueles sem paleta) ou podem ser índices de uma matriz de paletas. A imagem em si é gravada linha por linha. Em segundo lugar, a imagem parece estar de cabeça para baixo. Ou seja, a linha inferior é escrita primeiro, depois a penúltima linha e assim por diante até o topo. E, em terceiro lugar, conforme escrito, se o tamanho da linha raster não for múltiplo de 4, ela será preenchida com 1 a 3 bytes vazios (zero) para que o comprimento da linha seja um múltiplo do parágrafo. Esta é a coisa mais desagradável. O fato é que para cada formato você tem que ajustar esse número de bytes vazios (embora eu goste de escrever parte da paleta lá, só não quero criar variáveis ​​“zero” extras se esses bytes forem ignorados de qualquer maneira e ninguém precisa deles). Forneço uma tabela com fórmulas que mostram para qual formato quantos bytes devem ser adicionados ao final da linha. Lá, a variável Largura, como você pode imaginar, significa a largura da imagem. Todas essas fórmulas foram estabelecidas experimentalmente. Darei um exemplo apenas para os formatos mais utilizados. Quanto ao resto, você mesmo pode escrever.

Programas de exemplo

Você pode baixar todas as fontes. Não vou escrever muito aqui. Vou apenas fornecer as funções com comentários.

Olá 1. Criando uma imagem em formato bmp.
Aqui é criada uma imagem monocromática. Existem três exemplos de tais funções: criação de bmp de 8, 16 e 24 bits. Darei apenas para 16 bits.

// Vamos criar uma imagem no formato bmp de 16 bits como 5-5-5, que será simplesmente monocromática
void CreateBmp555(char * fname, WORD color)
{
MANIPULAR hArquivo;
DWORDRW;
int eu, j;

//Declara as estruturas necessárias
BITMAPFILEHEADER bfh;
BITMAPINFHEADER bih;
Paleta BYTE[1024]; // Paleta

// Vamos ter uma imagem de 35 x 50 pixels
largura interna = 35;
altura interna = 50;

memset(Paleta, 0, 1024); // Na paleta temos zeros, preencha-os
memset (&bfh, 0 , sizeof (bfh) ) ;

Bfh.bfType = 0x4D42; // Vamos denotar que este é bmp "BM"
bfh.bfOffBits = sizeof (bfh) + sizeof (bih) + 1024; // A paleta ocupa 1 KB, mas não a usaremos
bfh.bfSize = bfh.bfOffBits +
sizeof(cor) * Largura * Altura +
Altura * ((tamanho de (cor) * Largura) % 4 ) ; //Calcula o tamanho do arquivo final
memset (&bih, 0 , sizeof (bih) ) ;
bih.biSize = tamanhode(bih); // É assim que deveria ser
bih.biBitCount = 16; // 16 bits por pixel
bih.biClrUsado = 32768; // Usamos 5-5-5
bih.biCompression = BI_RGB; //Sem compactação
bih.biHeight = Altura;
bih.biWidth = Largura;
bih.biPlanes = 1; //Deve ser 1
// E os campos restantes permanecem 0

HFile = CreateFile(fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
if (hArquivo == INVALID_HANDLE_VALUE)
retornar ;

//Escreve os cabeçalhos
WriteFile (hFile, & bfh, sizeof (bfh) , & RW, NULL ) ;
WriteFile (hFile, & bih, sizeof (bih) , & RW, NULL ) ;

//Escreve a paleta
WriteFile(hArquivo, Paleta, 1024, &RW, NULL);
para (eu = 0; eu< Height; i++ )
{
para (j = 0; j< Width; j++ )
{
WriteFile (hArquivo, & cor, sizeof (cor), & RW, NULL ) ;
}

// Alinha com a borda
WriteFile (hFile, Paleta, (tamanho (cor) * Largura)% 4, & RW, NULL);
}
CloseHandle(hArquivo);
}

cor - cor da imagem. O valor desta variável deve ser preenchido conforme a primeira tabela. Você pode ver a imagem resultante no ACDSee, por exemplo. Acabei de tentar abri-lo no Photoshop, mas descobri que não consigo lê-los neste formato. Mas você pode :).

Exemplo 2. Convertendo uma imagem de 8 bits (256 cores) para 24 bits.

BOOL Convert256To24 (char * fin, char * fout)
{
BITMAPFILEHEADER bfh;
BITMAPINFHEADER bih;
largura interna, altura;
Paleta RGBQUAD[256];
BYTE * inBuf;
RGBTRIPLE * outBuf;
HANDLE hIn, hOut;
DWORDRW;
DWORD Off Bits;
int eu, j;

HIn = CreateFile (fin, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if (hIn == INVALID_HANDLE_VALUE)
retorna falso;

HOut = CreateFile(fout, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
if (hOut == INVALID_HANDLE_VALUE)
{
CloseHandle(hIn);
retorna falso;
}

//Leia os dados
ReadFile (hIn, & bfh, sizeof (bfh) , & RW, NULL ) ;
ReadFile (hIn, & bih, sizeof (bih) , & RW, NULL );
ReadFile (hIn, Paleta, 256 * sizeof (RGBQUAD) , & RW, NULL ) ;

// Coloca o ponteiro no início do raster
SetFilePointer (hIn, bfh.bfOffBits, NULL, FILE_BEGIN);
Largura = bih.biLargura ;
Altura = bih.biAltura;
OffBits = bfh.bfOffBits;

//Aloca memória
inBuf = novo BYTE [Largura];
outBuf = new RGBTRIPLE [Largura];

//Preenche os cabeçalhos
bfh.bfOffBits = sizeof (bfh) + sizeof (bih); // Não vamos escrever uma paleta
bih.biBitCount = 24;
bfh.bfSize = bfh.bfOffBits + 4 * Largura * Altura + Altura * (Largura% 4); // Tamanho do arquivo

// E o resto permanece inalterado
//Escreve os cabeçalhos
WriteFile (hOut, & bfh, sizeof (bfh) , & RW, NULL ) ;
WriteFile (hOut, & bih, sizeof (bih) , & RW, NULL ) ;

// Vamos começar a converter
para (eu = 0; eu< Height; i++ )
{
ReadFile (hIn, inBuf, largura, & RW, NULL);
para (j = 0; j< Width; j++ )
{
outBuf[ j].rgbtRed = Paleta[ inBuf[ j] ] .rgbRed ;
outBuf[ j].rgbtGreen = Paleta[ inBuf[ j] ] .rgbGreen ;
outBuf[ j].rgbtBlue = Paleta[ inBuf[ j] ] .rgbBlue ;
}
WriteFile (hOut, outBuf, sizeof (RGBTRIPLE) * Largura, & RW, NULL ) ;

// Escreve lixo para alinhamento
WriteFile (hOut, Paleta, Largura% 4, & RW, NULL);
SetFilePointer(hIn, (3 * Largura) % 4, NULL, FILE_CURRENT);
}

excluir inBuf;
excluir outBuf;
CloseHandle(hIn);
CloseHandle(hOut);
retorne VERDADEIRO;
}

Os nomes dos arquivos de origem e destino devem ser passados ​​para a função, respectivamente.

Você está aqui porque tem um arquivo com uma extensão que termina em .bmp. Arquivos com a extensão .bmp só podem ser iniciados por determinados aplicativos. É possível que os arquivos .bmp sejam arquivos de dados em vez de documentos ou mídia , o que significa que eles não foram feitos para serem visualizados.

o que é um arquivo .bmp ?

O formato de arquivo BMP é composto por um conjunto de especificações de codificação de imagem implementadas para a produção de arquivos de imagem raster não compactados. Esses arquivos de imagem bitmap são anexados com cabeçalhos de arquivo que incluem identificadores de bitmap, entre outros detalhes específicos do conteúdo da imagem dos arquivos BMP correspondentes. O conteúdo da imagem digital armazenado em um arquivo BMP consiste em pixels dentro de uma grade retangular. Os pixels contidos nesses arquivos BMP podem ser integrados com profundidades de cores variadas, dependendo dos cabeçalhos dos arquivos BMP. Gradientes em escala de cinza também podem ser aplicados aos pixels de um arquivo .bmp, e esses arquivos .bmp podem ser exportados para formatos de arquivo de imagem digital mais amplamente usados, com tamanho menor para portabilidade ideal.

como abrir um arquivo .bmp?

Inicie um arquivo .bmp ou qualquer outro arquivo em seu PC clicando duas vezes nele. Se as associações de arquivos estiverem configuradas corretamente, o aplicativo destinado a abrir o arquivo .bmp irá abri-lo. É possível que você precise baixar ou comprar o aplicativo correto. Também é possível que você tenha o aplicativo correto no seu PC, mas os arquivos .bmp ainda não estão associados a ele. Nesse caso, ao tentar abrir um arquivo .bmp, você pode informar ao Windows qual aplicativo é o correto para aquele arquivo. A partir de então, abrir um arquivo .bmp abrirá o aplicativo correto.

aplicativos que abrem um arquivo .bmp

Adobe Photoshop CS6 para Microsoft Windows

Adobe Photoshop CS6 para Microsoft Windows é um software de edição e gerenciamento de imagens que pode ser baixado em computadores Windows, nomeadamente Windows 7 (sem SP e com SP1) e Windows XP com SP3. Este software vem com novos recursos e ferramentas para edição fácil, rápida, divertida e avançada de imagens digitais. Um recurso que torna este programa confiável para edição de imagens é o Adobe Mercury Graphics Engine, que é uma tecnologia de mecanismo que oferece desempenho mais rápido e de alta qualidade. As ferramentas sensíveis ao conteúdo são novos recursos projetados para retocar imagens com facilidade, pois você pode cortar imagens sem qualquer efeito, corrigir automaticamente o desfoque ou curvaturas da lente grande angular, remover olhos vermelhos e ajustar o equilíbrio de cores, como brilho e contraste. Este editor de imagens também vem com recurso de recuperação automática que pode fazer backup de qualquer imagem não salva, opção Salvar em segundo plano, Galeria de desfoque, ferramenta de corte, criação de vídeo e muito mais. Com todos esses novos recursos aprimorados e uma interface moderna e amigável, a edição de fotos digitais nunca será tão divertida e fácil sem o Photoshop CS6.

Adobe Photoshop CS6 para Mac

Adobe Photoshop CS6 para Mac

Adobe Photoshop CS6 para Mac é a versão do software de gerenciamento de imagens “Creative Suite” projetado exclusivamente para computadores Mac, especialmente Mac OS X v10.6 a 10.7 em 64 bits. Este programa de edição de imagens vem com um novo conjunto de recursos e ferramentas, como o Mercury Graphics Engine desenvolvido pela mesma empresa para desempenho de aprimoramento de imagem rápido e de alta qualidade, recursos Content-Aware, ferramentas intuitivas reimaginadas para design de filmes, fluxos de trabalho , Galeria de desfoque, ferramenta de corte e muito mais. O Adobe Mercury Graphics Engine funciona de forma a tornar a tarefa de edição fácil e rápida de concluir. Isso também permite o compartilhamento e migração de imagens com opções de recuperação automática e salvamento em segundo plano. As novas ferramentas Content-Aware são feitas para uma maneira fácil e controlável de retocar ou aprimorar imagens que resultam em uma saída mais satisfatória. Basicamente, permite que qualquer usuário corrija automaticamente imagens, recorte-as e corrija curvaturas de lentes grande angulares.

Tela de Sistemas ACD 14

Tela de Sistemas ACD 14

ACD Systems Internacional Inc. é o desenvolvedor do ACD Systems Canvas 14, que é um software de solução técnica gráfica, que permite aos usuários analisar dados, aprimorar gráficos e compartilhar todas as informações com facilidade e rapidez. Este programa foi projetado com ferramentas completas que auxiliam os usuários na criação de gráficos e ilustrações técnicas com precisão. Consiste em ferramentas de edição que variam desde edição de imagens até ferramentas de ilustração de objetos. Quaisquer resultados gerados por este programa são boas apresentações para projetos, propostas e outros fins para qualquer ramo de negócios relacionado à gráfica e engenharia. Mais sobre os recursos, os usuários podem trabalhar com imagens raster e gráficos vetoriais usando o mesmo arquivo com a opção editar redimensionando e dimensionando objetos, desenhando formas, além de inserir traços e preenchimentos de tintas ou larguras. Há também uma ferramenta para adicionar textos ou rótulos e formatar dimensões, além de criar gráficos. Com este programa, os usuários podem compartilhar projetos finalizados através de apresentações ou publicações.

Sistemas ACD ACDSee 15

Sistemas ACD ACDSee 15

ACD Systems ACDSee 15 é um software de fotografia que apresenta um organizador de imagens, visualizador e programa RAW/editor de imagens para Microsoft Windows e Mac OS X 10.6 (Windows XP com Service Pack 2, Vista, 7 e 8; Mac OS X 10.5, 10.6 , 10.7 e Leão da Montanha). Foi desenvolvido pela ACD Systems International, Inc. e originalmente distribuído como um aplicativo de 16 bits que posteriormente foi atualizado com uma versão de 32 bits. Este requisito mínimo de hardware para esta aplicação é um processador Intel Pentium III/AMD Athlon ou equivalente com 512 MB de RAM (com 310 MB de espaço livre no disco rígido), um adaptador de vídeo de alta cor com resolução de 1024 x 768 e um gravador de CD/DVD. ACDSee gerencia e oferece suporte a arquivos de vídeo e áudio em formatos que incluem GIF, BMP, JPG, PNG, MP3, PSD, WAV, MPEG e TIFF. Os usuários podem visualizar, editar, adicionar efeitos e organizar coleções de fotos e vídeos que podem ser compartilhadas online. As fotos podem ser organizadas à medida que são importadas da câmera ou de outro dispositivo de armazenamento. Ele também possui visualização de mapa e suporte para marcação geográfica que permite aos usuários visualizar a localização de imagens de câmeras habilitadas para GPS. Recursos como navegação rápida, digitalização, edição e opções de backup facilitam a classificação de fotos por data e evento e o armazenamento de cópias de backup em CD, DVD e Blu-Ray.

Foi considerado um pequeno programa que movia o sprite pela tela, mas, infelizmente, não ficou como gostaríamos. Neste artigo tentaremos “arrumar” o sprite.

Obtivemos a imagem do sprite de um arquivo Bmp; dos mesmos arquivos podemos tirar a imagem do fundo, do cursor do mouse e dos elementos da interface. Porém, o que vemos na tela não é exatamente o que esperávamos: a imagem acabou ficando de cabeça para baixo e, além disso, com cores diferentes das exigidas. Então, vamos aprender como ler arquivos Bmp corretamente e virar a imagem “da cabeça aos pés”.

Por decisão dos desenvolvedores, o formato de arquivo Bmp não está vinculado a uma plataforma de hardware específica. Este arquivo consiste em quatro partes: um cabeçalho, um cabeçalho de informações, uma tabela de cores (paleta) e dados de imagem. Se o arquivo armazenar uma imagem com profundidade de cor de 24 bits (16 milhões de cores), a tabela de cores pode estar faltando, mas em nosso caso de 256 cores ela está lá. A estrutura de cada parte de um arquivo que armazena uma imagem de 256 cores é fornecida em , e os tipos de registro correspondentes são fornecidos em .

O cabeçalho do arquivo começa com assinaturas“BM” seguido do comprimento do arquivo, expresso em bytes. Os próximos 4 bytes são reservados para outras extensões de formato e este cabeçalho termina deslocamento desde o início do arquivo até os dados de imagem gravados nele. Com 256 cores, esse deslocamento é 1.078 - é exatamente quanto tivemos que pular em nosso programa anterior para chegar aos dados.

O cabeçalho de informações começa com seu próprio comprimento (pode variar, mas para um arquivo de 256 cores é de 40 bytes) e contém as dimensões da imagem, resolução, características de apresentação de cores e outros parâmetros.

Largura e altura da imagem são especificados em pontos raster e provavelmente não requerem explicação.

Número de aviões pode ser usado em arquivos com baixa profundidade de cor. Quando o número de cores é 256 ou mais, é sempre igual a 1, portanto este campo já pode ser considerado obsoleto, mas por questão de compatibilidade ele é mantido.

Profundidade de coré considerada a característica mais importante da forma como a cor é representada em um arquivo e é medida em bits por ponto. Neste caso é igual a 8.

Compressão. Geralmente não é usado em arquivos Bmp, mas é fornecido um campo no cabeçalho para isso. Normalmente é 0, o que significa que a imagem não está compactada. No futuro usaremos apenas esses arquivos.

Tamanho da imagem- o número de bytes de memória necessários para armazenar esta imagem, sem contar os dados da paleta.

Resoluções horizontais e verticais medido em pontos raster por metro. Eles são especialmente importantes para manter a escala das imagens digitalizadas. Imagens criadas em editores gráficos geralmente apresentam zeros nesses campos.

Número de cores permite reduzir o tamanho da tabela de paletas se a imagem realmente contiver menos cores do que a profundidade de cores selecionada permite. No entanto, na prática, esses arquivos quase nunca são encontrados. Se o número de cores for o máximo permitido pela profundidade de cor, por exemplo 256 cores a 8 bits, o campo será definido como zero.

Número de cores primárias- vem do início da paleta e é aconselhável exibi-la sem distorção. Este campo é importante quando o número máximo de cores de exibição é menor que na paleta do arquivo Bmp. Ao desenvolver o formato, obviamente foi assumido que as cores que ocorrem com mais frequência estariam localizadas no início da tabela. Agora esse requisito praticamente não é atendido, ou seja, as cores não são ordenadas pela frequência com que ocorrem no arquivo. Isso é muito importante, pois as paletas de dois arquivos diferentes, mesmo compostos pelas mesmas cores, as conteriam (as cores) em ordem diferente, o que poderia complicar significativamente a exibição simultânea de tais imagens na tela.

O cabeçalho de informações é seguido por uma tabela de cores, que é uma matriz de 256 (em número de cores) campos de 4 bytes. Cada campo corresponde a uma cor na paleta e três dos quatro bytes correspondem aos componentes azul, verde e vermelho dessa cor. O último byte mais significativo de cada campo é reservado e é igual a 0.

Após a tabela de cores estão os dados da imagem, que são escritos ao longo das linhas raster de baixo para cima e dentro da linha - da esquerda para a direita. Como em algumas plataformas é impossível ler uma unidade de dados menor que 4 bytes, o comprimento de cada linha é alinhado a um limite de 4 bytes, ou seja, se o comprimento da linha não for múltiplo de quatro, ela é preenchida com zeros. Esta circunstância deve ser levada em consideração na leitura do arquivo, embora seja melhor garantir antecipadamente que as dimensões horizontais de todas as imagens são múltiplos de 4.

Como já dissemos, o formato do arquivo foi projetado para ser universal para diversas plataformas, por isso não é surpreendente que as cores da paleta sejam armazenadas nele de forma diferente do que é habitual para VGA. Durante o procedimento de leitura, é realizada a recodificação necessária. (Falaremos sobre o que é a paleta VGA e como trabalhar com ela nos artigos a seguir.)

O módulo de leitura de arquivos Bmp de 256 cores possui apenas dois procedimentos. Como pode ser visto na listagem, as dimensões da imagem devem ser passadas para o procedimento de leitura do arquivo ReadBMP. Isto é conveniente se a imagem não precisar ser lida completamente. Quando os tamanhos são conhecidos antecipadamente, isso não causa problemas, mas seria bom se, através do nosso módulo, fosse possível ler quaisquer imagens, inclusive aquelas cujo tamanho é previamente desconhecido. Para tanto, é fornecido o procedimento ReadBMPheader, que lê apenas o cabeçalho do arquivo. Ao chamá-lo, você pode verificar se a imagem está gravada no formato de 256 cores selecionado, descobrir suas dimensões e só então alocar memória para ela e colocá-la no buffer alocado.

Agora vamos conectar um novo módulo ao nosso programa. Para fazer isso, escreveremos seu nome na diretiva uses, e também forneceremos um array para armazenar dados sobre a paleta, que pode ser descrito assim:

P: matriz de bytes;

O procedimento CreateSprite, que invoca a operação de leitura de um arquivo de um novo módulo, foi simplificado (veja).

Estrutura do arquivo Bmp

Nome Comprimento Viés Descrição
Cabeçalho do arquivo (BitMapFileHeader)
Tipo2 0 Assinatura "BM"
Tamanho4 2 tamanho do arquivo
Reservado 12 6 Reservado
Reservado 22 8 Reservado
Bits de deslocamento4 10 Deslocamento da imagem desde o início do arquivo
Cabeçalho de informações (BitMapInfoHeader)
Tamanho4 14 Comprimento do cabeçalho
Largura4 18 Largura da imagem, pontos
Altura4 22 Altura da imagem, pontos
Aviões2 26 Número de aviões
Contagem de bits2 28 Profundidade de cor, bits por ponto
Compressão4 30 Tipo de compactação (0 - imagem não compactada)
TamanhoImagem4 34 Tamanho da imagem, bytes
XpelsPerMeter4 38 Resolução horizontal, pontos por metro
YpelsPerMeter4 42 Resolução vertical, pontos por metro
Cores usadas4 46 Número de cores usadas (0 é o máximo possível para uma determinada profundidade de cor)
CoresImportante4 50 Número de cores primárias
Tabela de cores (paleta)
Tabela de cores1024 54 256 elementos de 4 bytes
Dados de imagem (matriz BitMap)
ImagemTamanho1078 Imagem gravada em linhas da esquerda para a direita e de baixo para cima

Listagem 1

unidade bmpread; (procedimentos para trabalhar com Bmp) tipo de interface artype = arrayof byte; arptr = ^artype; bmFileHeader = registro (cabeçalho do arquivo) Typf: word; (assinatura) Tamanho: inteiro longo; (comprimento do arquivo em bytes) Res1: palavra; (reservado) Res2: palavra; (reservado) OfBm: inteiro longo; (deslocamento da imagem em bytes (1078)) fim; bmInfoHeader = registro (cabeçalho de informações) Tamanho: inteiro longo; (comprimento do cabeçalho em bytes (40)) Largura: inteiro longo; (largura da imagem (em pixels)) Heig: inteiro longo; (altura da imagem (em pixels)) Plano: palavra; (número de planos (1)) BitC: palavra; (profundidade de cor (bits por ponto) (8)) Comp: inteiro longo; (tipo de compactação (0 - não)) SizI: inteiro longo; (tamanho da imagem em bytes) XppM: inteiro longo; (resolução horizontal) ((pontos por metro - geralmente 0)) YppM: inteiro longo; (resolução vertical) ((pontos por metro - geralmente 0)) NCoL: inteiro longo; (número de cores) ((se o máximo permitido for 0)) NCoI: longint; (número de cores primárias) fim; bmHeader = registro (cabeçalho completo do arquivo) f: bmFileHeader; (cabeçalho do arquivo) i: bmInfoHeader; (cabeçalho de informações) p: array de bytes; (tabela de paleta) fim; bmhptr = ^bmHeader; (lendo uma imagem de um arquivo Bmp) procedimento ReadBMP(image:arptr; (array com imagem) xim,yim:word; (dimensões) pal:arptr; (paleta) nome do arquivo:string); (nome do arquivo) (leitura do cabeçalho do arquivo Bmp) procedimento ReadBMPheader(header:bmhptr;filename:string); implementação ($R-) (leitura de uma imagem de um arquivo Bmp) procedimento ReadBMP(image:arptr; xim,yim:word; pal:arptr; nome do arquivo:string); var h:bmHeader; eu: inteiro; arquivo bmp: arquivo; s: inteiro longo; começar a atribuir(bmpfile,nome do arquivo); reset(arquivobmp,1); blockread(arquivobmp,h,tamanho(h)); (lendo o cabeçalho) for i:= 0 to yim-1 do Begin (lendo linha por linha) blockread(bmpfile,image^[(yim-i-1)*xim],xim); se (xim mod 4)<>0 então blockread(bmpfile,s,4 - (xim mod 4)); fim;

fechar(arquivobmp); para i ^= 0 a 255 comece (transformação da paleta) pal^ := h.p shr 2; (azul) pal ^: = hp shr 2; (verde) pal ^: = hp shr 2; fim (vermelho); fim; (lendo o cabeçalho de um arquivo Bmp) procedimento ReadBMPheader(header:bmhptr;filename:string); var arquivobmp:arquivo; começar a atribuir(bmpfile,nome do arquivo); reset(arquivobmp,1); blockread(bmpfile,cabeçalho^,tamanho(cabeçalho^)); fechar(arquivobmp); fim; fim.

( sprite) procedimento CreateSprite(s:string; x,y,dx,dy:integer); var f: arquivo; (arquivo com imagem sprite) start getmem(Sprt.Img,sizeof(SpriteArrayType)); (alocar memória para o sprite) getmem(Sprt.Back,sizeof(SpriteArrayType)); (alocar memória para o buffer) Readbmp(@(Sprt.Img^),Xsize,Ysize,@p,s); Sprt.x:= x; Spr.y:=y; (defina os valores iniciais) Sprt.dx:= dx; (coordenadas e incrementos) Sprt.dy:= dy; fim;

Anúncio

Formato de arquivo de imagem BMP Raster

BMP (arquivo bitmap, formato de arquivo bitmap independente de dispositivo) são arquivos bitmap usados ​​para armazenar imagens bitmap digitais separadamente do dispositivo de exibição. Este tipo de arquivo foi usado anteriormente no Microsoft Windows e OS/2. O termo "raster" vem da ideia dos programadores de bitmap. As imagens BMP geralmente são descompactadas ou compactadas sem perdas (por exemplo, usando ZIP ou RAR - devido à presença de dados redundantes no arquivo). Hoje, o JPG é o formato de imagem preferido – principalmente devido ao grande tamanho do arquivo BMP, que pode causar problemas ou atrasos no download, envio ou upload de arquivos.

Informações técnicas sobre arquivos BMP

Os arquivos BMP são armazenados como imagens 2D de vários tamanhos, cores e profundidades de cores sem compactação de dados, perfis de cores ou canais alfa. As imagens BMP são salvas em formatos de bitmap independente de dispositivo (DIB), o que significa que a imagem possui cores em vez de especificações do sistema. Isso explica por que algumas imagens BMP parecem diferentes em computadores diferentes. As imagens BMP podem ser visualizadas em qualquer dispositivo, incluindo telas de computador e televisão. A falta de patentes tornou este tipo de imagem um formato popular para uma ampla gama de dispositivos.

Informações adicionais sobre o formato BMP



 

Pode ser útil ler:

 



Extensão de arquivo .bmp
Categoria de arquivo
Arquivo de exemplo (2,7 MiB)
(487,85 KiB)
Programas relacionados Adobe Photoshop
MS Pintura
Editor de fotos da Microsoft
pincel