gerador de BMPs
Publicado por Rafael 17/10/2008
[ Hits: 6.351 ]
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(); } };
Compactando arquivos de log *.txt
Copia uma linha selecionada para um arquivo secundário
Alfabeto escrito 30 vezes e operação XOR
Compartilhando a tela do Computador no Celular via Deskreen
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[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