Partage
  • Partager sur Facebook
  • Partager sur Twitter

SFML fonction inverse loadFromMemory

Sujet résolu
    30 juillet 2019 à 15:40:13

    Bonjours ,

    j'aimerai save une image après transformation .

    sf::image image;
    
    std::vector<unsigned char> data = .....;
    
    image.loadFromMemory(&data[0],data.size());
    
    std::vector<unsigned char> test2 = image.saveToMemory();
    
    if(data == image){
    	std::cout <<"good"<<std::endl;
    }

    j'ai test aussi avec la fonction "getPixelsPtr" mais je ne c'est pas comment l'utilisée .

    je ne c'est comment faire merci d'avance pour votre aide .

    -
    Edité par di20 30 juillet 2019 à 15:41:17

    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2019 à 15:53:06

      Lu',

      d'apres la doc, getPixelsPtr ne permet d'acceder à l'image qu'en mode lecture. Pour ton problème, il suffit juste d'utiliser le bon constructeur et la fonction saveToFile.

      • Partager sur Facebook
      • Partager sur Twitter

      Eug

        30 juillet 2019 à 16:06:00

        Salut Eugchriss ,

        merci pour ta réponse , mais j'aimerai récupérée un vector <unsigned char > pour voir faire d'autre traitement .

        J'ai pour le moment une autre option mais pas terrible qui consiste a save l'image en ficher est de la lire avec un std::iostream. 

        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2019 à 17:16:04

          C'est pas très compilqué, voici un code d'exemple.

          sf::image baseImage;
          if(!baseImage.loadFromFile(...))
          {
             //...
          }
          
          auto width = baseImage.getSize().x;
          auto height = baseImage.getSize().y;
          std::vector<Uint8> baseImageData( width * height);
          
          auto baseImagePixelsPtr = baseImage.getPixelsPtr();
          assert(baseImagePixelsPtr);
          std::copy_n(baseImagePixelsPtr, width * height, std::begin(baseImageData));
          
          //les transformations que tu veux faire
          const auto transformedData = process(baseImageData);
          
          sf::image finalImage;
          finalImage.create(width, height, std::data(trasformedData));
          if(!finalImage.saveToFile(...))
          {
              //...
          }
          • Partager sur Facebook
          • Partager sur Twitter

          Eug

            1 août 2019 à 14:13:54

            Salut ,

            merci pour ton aide et désolé de répondre aussi tard mais je n'est pas eu le temps plus tot pour répondre .

            • Partager sur Facebook
            • Partager sur Twitter

            SFML fonction inverse loadFromMemory

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown