Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: sauvegarder une image creer a partie de 2 images  (Lu 2763 fois)

0 Membres et 1 Invité sur ce sujet

requiem

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
sauvegarder une image creer a partie de 2 images
« le: Septembre 14, 2013, 07:47:22 am »
Bonjour,

je suis nouveau sur le forum et sur SFML, donc si le sujet a déjà été traité, je m'en excuse, mais je n'ai pas trouvé ma solution.

voila mon problème :
j'ai 2 images  :
 - une jpeg tout a fait classique, issue d'une camera.
 - une image créée de toute pièce dans sfml a partir des données de la camera dans laquelle, certaines zones sont totalement transparentes, d'autres d'un couleur verte transparente.

le but est de superposer les images, la JPEG en dessous et la "transparente" au dessus.

ma question :
- comment mettre une couleur vide transparente totale sur la 2ieme image, pour creer des zones de la jpeg inchangé dans le résultat final
- comment effectué la superposition de ces 2 images. le résultat ne doit pas etre affiché, mais sauvegarde sur disque au format png par exemple, car le format jpg ne gere pas la transparence.

le resultat me fournira une image sur laquelle j'ai plaqué des informations sur les zones qui ont bougé dans l'image entre 2 images prise par la camera.

là, je cale un peu sur le problème.

d'avance merci à tous.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sauvegarder une image creer a partie de 2 images
« Réponse #1 le: Septembre 14, 2013, 08:42:14 am »
On ne va pas te pondre le code tout cuit ;)

Qu'est-ce que tu as déjà essayé ? Tu bloques sur quoi précisément ? As-tu lu la documentation et les tutoriels ?
Laurent Gomila - SFML developer

requiem

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : sauvegarder une image creer a partie de 2 images
« Réponse #2 le: Septembre 16, 2013, 09:43:52 am »
je demande pas le code tout cuit  ;D , je vais pouvoir me débrouille la dessus,

non, ce que je cherche, c'est a comprendre :

j'arrive a lire une image avec la classe IMAGE
donc lire ou créer une image de toutes pièces, pas de soucis.

la ou je coince, c'est plutôt sur comment superposer les 2 images : dans la classe IMAGE on peut modifié qu'une image à la fois.
donc comment a partir de 2 images on peut ressortir une 3ieme issus de la superposition de la 1 et 2.
ensuite avec une savetofile, on sauvegarde en PNG.

est-ce plus clair maintenant  ;)


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sauvegarder une image creer a partie de 2 images
« Réponse #3 le: Septembre 16, 2013, 09:53:54 am »
Tu prends les pixels (getPixel) de l'une et l'autre, tu les mélanges/bidouilles selon l'effet souhaité, puis tu écris le résultat sur l'image finale (setPixel).
Laurent Gomila - SFML developer

requiem

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : sauvegarder une image creer a partie de 2 images
« Réponse #4 le: Septembre 16, 2013, 09:59:17 am »
ca ok, c'est ce que je suis en train de faire, mais je voulais savoir si il y avait une classe qui faisait un truc du style :

Image Image::Mix(Image * img1, Image * img2);

peut etre que ce n'est pas faisable ou existant par defaut.

je suis en train de faire mon propre algo de mixage (alpha blending)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sauvegarder une image creer a partie de 2 images
« Réponse #5 le: Septembre 16, 2013, 10:21:20 am »
Tu peux toujours utiliser un sf::RenderTexture et dessiner tes images via des textures puis des sprites, mais c'est un peu lourd pour faire simplement de la copie de pixels.

Quel algorithme de mélange te faut-il ? Si c'est de l'alpha blending de base (mélange en fonction du canal de la source), alors tu peux peut-être utiliser la fonction Image::copy.
Laurent Gomila - SFML developer

requiem

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : sauvegarder une image creer a partie de 2 images
« Réponse #6 le: Septembre 16, 2013, 11:02:11 am »
voila un exemple qui marche pas trop mal :

Image img;
Color s,d ;
int alpha = 0xC0;

if (!img.loadFromFile("img1.jpg"))
      cout << " Error loading file " << endl;

// creer une zone verte transparent dans le Rect de coordonnées (50,50) et (100,100)
for(unsigned int y = 50; y<100; y++)
     for (unsigned int x = 50; x <100; x++)
    {
            // recupere le pixel source
            s = img.getPixel(x,y);
            // melange le pixel avec un vert transparent ( le 255 est le vert a fond, on peut mettre la valeur qu'on veut)
            s.g = (alpha*s.g + (256-alpha)*255 ) >> 8 ;
            // sauve le pixel
            img.setPixel(x,y,s);

    }

if (!img.saveToFile("out1.jpg"))
     cout << "error saving file " << endl;