Llibreria EasyBMP

De Wikijoan
Dreceres ràpides: navegació, cerca

Llibreria EasyBMP per manipular imatges BMP

Contingut

Introducció

M'interessa aquesta llibreria perquè tinc la idea d'automatitzar la creació de targetes perforades que serveixin per al DIT Music Box de ThinkGeek. La idea és partir d'un fitxer de lilypond i generar un bitmap amb els punts que he de punxar...

Instal.lació

Es descarrega el projecte de la pàgina de SourceForge, i també es descarrega la documentació

$ sudo make
cp ../EasyBMP*.h .
cp ../EasyBMP.cpp .
g++ -O3 -pipe -fomit-frame-pointer -funroll-all-loops -s -c EasyBMP.cpp
g++ -c EasyBMPsample.cpp
g++ -O3 -pipe -fomit-frame-pointer -funroll-all-loops -s EasyBMP.o EasyBMPsample.o -o EasyBMPtest

Primeres proves

Mirant la documentació, faig el primer exemple, que és un conversor de imatges en color a imatges en gris:

ColorBMPtoGrayscale.cpp:

#include "EasyBMP.h"
using namespace std;
int main( int argc, char* argv[] )
{
 if( argc != 3 )
 {
   cout << "Usage: ColorBMPtoGrayscale <input_filename> <output_filename>"
        << endl << endl;
   return 1;
 }
 // declare and read the bitmap
 BMP Input;
 Input.ReadFromFile( argv[1] );

 // convert each pixel to grayscale using RGB->YUV
 for( int j=0 ; j < Input.TellHeight() ; j++)
 {
 	for( int i=0 ; i < Input.TellWidth() ; i++)
 	{
 		int Temp = (int) floor( 0.299*Input(i,j)->Red + 0.587*Input(i,j)->Green + 0.114*Input(i,j)->Blue );
		ebmpBYTE TempBYTE = (ebmpBYTE) Temp;
		Input(i,j)->Red   = TempBYTE;
		Input(i,j)->Green = TempBYTE;
		Input(i,j)->Blue = TempBYTE;
	}
 }
 // Create a grayscale color table if necessary
 if( Input.TellBitDepth() < 16 )
 { CreateGrayscaleColorTable( Input ); }
 // write the output file
 Input.WriteToFile( argv[2] );
 return 0;
}

Compile your source code as you normally would along with the single EasyBMP.cpp file; you don’t have to link to anything. For instance, to compile the code example above with g++, use

g++ -o ColorBMPtoGrayscale ColorBMPtoGrayscale.cpp EasyBMP.cpp
./ColorBMPtoGrayscale blackbuck.bmp blackbuck_grayscale.bmp

i funciona perfecte

lilypond format to ThinkGeek Music Box: lili2musicbox

Començo a treballar el codi. La idea és que tinc una plantilla amb una imatge en blanc i que té les dimensions de l'amplada que necessito. Començo a escriure en la imatge.

lili2musicbox.cpp:

#include "EasyBMP.h"
using namespace std;
int main( int argc, char* argv[] )
{
 if( argc != 3 )
 {
   cout << "Usage: prova1 <template_filename> <output_filename>"
        << endl << endl;
   return 1;
 }
 // declare and read the bitmap
 BMP Input;
 Input.ReadFromFile( argv[1] );

Input(1,1)->Red=50;
Input(1,1)->Green=50;
Input(1,1)->Blue=50;

Input.WriteToFile( argv[2] );

}

lilypond2musicbox v1.0


creat per Joan Quintana Compte, octubre 2009

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines