Creer une image à partir d'une liste de Pixel
Bonjour et Joyeux Noël :P
J'ai une petite question, je n'arrive pas à créer une image à partir d'une liste de Pixel (donc de vecteur de taille 3) en C++.
Existe-il une libraire simple pour faire ce genre de chose rapidement ? j'ai entendu parler de Cimg mais j'ai un peu de mal à voir comment l'appliquer dans le cas présent.
J'ai également essayé de programmer moi même une fonction pour enregistrer cette image en .ppm mais j'ai une segfault que je n'arrive pas à lever :roll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
template<typename T>
void savePPM(glm::tvec3<double>* image, renderContext* rc, const char *filename) {
std::ofstream ofs;
ofs.open(filename);
int H = rc->getHeight();
int W = rc->getWidth();
ofs << "P6\n" << rc->getWidth() << " " << rc->getHeight() << "\n255\n";
for (int j = 0; j < H; j++) {
for (int i = 0; i < W; i++) {
glm::tvec3<double> pixelChar;
pixelChar[0] = (*image)[0] * 255;
pixelChar[1] = (*image)[1] * 255;
pixelChar[2] = (*image)[2] * 255;
if(j != H-1 || i != W-1){
image++; // segfault
}
ofs.write((char*)&pixelChar[0], 3);
}
}
ofs.close();
} |
Merci d'avance pour ceux qui prendront le temps de m'aider.
Si vous désirez d'autres informations sur le code n'hésitez pas !