gerador de BMPs
Publicado por Rafael 17/10/2008
[ Hits: 6.332 ]
Homepage: nenhum
Espero que o seu uso seja simples: forneça
--> um nome para o arquivo BMP,
--> largura e altura da imagem
--> um vetor [][][3] de float com as cores para o construtor
/* * Copyright (C) 2008, 2008 Rafael Siqueira Telles Vieira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * License: http://www.lia.ufc.br/~rafaelstv/licenca_GPL_pt.txt * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * */ /* Exemplo de uso: Gera um quadrado verde #include <stdio.h> #include "bitmap.hpp" int main(int argc, char**argv) { float ***imagem; int i,j; imagem = new float**[100]; for (i=0;i<100;i++) { imagem[i] = new float*[100]; for (j=0;j<100;j++) { imagem[i][j] = new float[3]; imagem[i][j][0]=0.0f; imagem[i][j][1]=1.0f; imagem[i][j][2]=0.0f; } } Bitmap *bmp; bmp = new Bitmap(argv[1], 100, 100, imagem); } */ #include <iostream> #include <fstream> using namespace std; class Bitmap { private: char* nome; int largura; int altura; float ***imagem; ofstream *arquivo; public: Bitmap(char* nome, int largura, int altura, float ***imagem) { this->nome = nome; this->largura = largura; this->altura = altura; this->imagem = imagem; arquivo = new ofstream(nome, ios::app); criaBMP(); } void escreveByte(char c) { (*arquivo) << c; } char converteCor(float espectro) { return ((char)((int) (255.0*espectro))); } void escreveCor(float *cor) { escreveByte(converteCor(cor[2])); escreveByte(converteCor(cor[1])); escreveByte(converteCor(cor[0])); } void escreveCabecalho() { (*arquivo) << 'B'; (*arquivo) << 'M'; int tamanho = (largura * altura * 3) + 54; // 54 bytes para o cabecalho do BMP escreveInt(tamanho); escreveInt(0); escreveInt(54); escreveInt(40); escreveInt(largura); escreveInt(altura); escreveShort(1); escreveShort(24); escreveInt(0); escreveInt(0); escreveInt(0); escreveInt(0); escreveInt(0); escreveInt(0); } void escreveShort(short numero) { char* t = (char*) № (*arquivo) << t[0]; (*arquivo) << t[1]; } void escreveInt(int numero) { char* t = (char*) № (*arquivo) << t[0]; (*arquivo) << t[1]; (*arquivo) << t[2]; (*arquivo) << t[3]; } void criaBMP() { int i,j; escreveCabecalho(); for (i=altura-1;i>=0;i--) for(j=0;j<largura;j++) escreveCor(imagem[j][i]); (*arquivo).close(); } };
ORDENACAO PELO METODO SHELLSORT
Copia uma linha selecionada para um arquivo secundário
Montando string de conexão para banco de dados em C# através de um arquivo xml personalizado
FileCopy - Copiador de Arquivo de Texto
Atenção a quem posta conteúdo de dicas, scripts e tal (6)
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
O mínimo que você precisa saber sobre o terminal (parte 2)
O mínimo que você precisa saber sobre o terminal (parte 1)
Como iniciar uma máquina virtual do VirtualBox automaticamente no boot do LUbuntu 18 LTS
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como deixar as abas do Firefox mais fininhas
Mudar o gerenciador de login (GDM para SDDM)
"Tentando" fazer com que programas rodem no Wayland e no X11
Formatar NVM Express 1.3 de forma segura por completo (3)
Problema ao usar monitor externo via USB-C/Display... no Ubuntu 24 (1)
Porblema com MergeList [RESOLVIDO] (10)
Melhor hospedagem em nuvem para projetos Laravel com baixo custo? [RES... (7)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta