by Excale » 15 Nov 2010, 20:53
J'ai essayé de réécrire BMP2XML en C++, et j'ai mis ça dans le même fichier que IMG2BMP (déjà en C++).
Ça me donne un truc très moche qui ne fonctionne pas correctement.
- Code: Select all
#include iostream
#include fstream
#include string
#include SFML/System.hpp
#include SFML/Graphics.hpp
using namespace std;
void BMPXML()
{
ofstream xmlfile("Problem1.xml", ios::out | ios::trunc); //déclaration du flux et ouverture du fichier
ifstream bmpfile("converted.bmp", ios::in); // on ouvre le fichier en lecture
if(bmpfile xmlfile) // si l'ouverture a réussi
{
char poubelle;
char bmpbrut;
xmlfile "?xml version=""1.0"" encoding=""UTF-8"" ?prob xmlns=""urn:TI.Problem"" ver=""1.0""syme t=""1"" f=""0""nx1/nv{";
for (int i = 0 ; i 54 ; i++) { bmpfile.get(poubelle); }
for (int i = 1 ; i = 7 ; i++)
{
if (i1)
{
xmlfile "-1}/v/ee t=""1"" f=""0""nx" i "/nv{";
}
for (int j = 1 ; i = 31 ; i++)
{
for (int k = 1 ; i = 318 ; i++)
{
if (bmpfile.get(poubelle) bmpfile.get(poubelle) bmpfile.get(bmpbrut))
{
if (bmpbrut==0)
{
xmlfile k ",";
}
}
}
bmpfile.get(poubelle);
bmpfile.get(poubelle);
}
}
bmpfile.close(); // on referme le fichier
}
else
cerr "Erreur à l'ouverture !" endl;
// Partie II
ifstream bmp2file("converted.bmp", ios::in); // on ouvre le fichier en lecture
if(bmp2file xmlfile) // si l'ouverture a réussi
{
char poubelle;
char bmpbrut;
xmlfile "-1}/v/ee t=""1"" f=""0""ny1/nv{";
for (int i = 0 ; i 54 ; i++) { bmpfile.get(poubelle); }
for (int i = 1 ; i = 7 ; i++)
{
if (i0)
{
xmlfile "-1}/v/ee t=""1"" f=""0""ny" (i + 1) "/nv{";
}
for (int j = 1 ; i = 31 ; i++)
{
for (int k = 1 ; i = 318 ; i++)
{
if (bmpfile.get(poubelle) bmpfile.get(poubelle) bmpfile.get(bmpbrut))
{
if (bmpbrut==0)
{
xmlfile (j + (i * 31)) ",";
}
}
}
bmpfile.get(poubelle);
bmpfile.get(poubelle);
}
}
xmlfile "un truc long qui n'a pas beaucoup d'inportance";
bmpfile.close(); // on referme le fichier
}
else
cerr "Erreur à l'ouverture !" endl;
xmlfile.close(); // on referme le fichier
}
unsigned int toGrey1(sf::Color col)
{
unsigned char ret;
ret = (unsigned int) (0.299 * (float) col.r + 0.587 * (float) col.g + 0.114 * (float) col.b);
return ret 7;
}
unsigned int round(float x)
{
unsigned int ret = (unsigned int) x;
if(x - (float) ret = 0.5)
ret ++;
return ret;
}
int main(int argc, char **argv)
{
if(argc != 2)
{
cout "Converts an image into a BW 318*212 24bpp BMP" endl;
cout "Usage: IMG2BMP input_file" endl;
return 0;
}
sf::Image img, dst;
float xFactor, yFactor;
if(!img.LoadFromFile(argv[1]))
{
cout "Erreur: impossible d'ouvrir le fichier d'entree: "" argv[2] """ endl;
return 0;
}
xFactor = img.GetWidth() / 318.f;
yFactor = img.GetHeight() / 212.f;
dst.Create(318,212, sf::Color::White);
for(unsigned int i = 0; i 318; i ++)
for(unsigned int j = 0; j 212; j ++)
dst.SetPixel(i, j, toGrey1(img.GetPixel(round((float)i * xFactor), round((float) j * yFactor))) ? sf::Color::White : sf::Color::Black);
dst.SaveToFile("./converted.bmp");
BMPXML();
return 0;
}
Si quelqu'un a une envie de le regarder, je ne le prive pas
.