Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: blackmetal le Novembre 07, 2014, 08:12:48 pm

Titre: Problème avec la fonction loadFromMemory [Résolu]
Posté par: blackmetal le Novembre 07, 2014, 08:12:48 pm
Bonjour,

J'ai remarqué que la fonction loadFromMemory provoquait des erreurs que la fonction loadFromFile ne provoquait pas. Voici un exemple ce code dans lequel le chargement d'une font par la mémoire ne fonctionne pas alors que le chargement de la même font directement à partir du fichier fonctionne.

Je suis sur Windows 7, avec Code::Blocks 13.12. J'utilise SFML 2.1 que j'ai recompilé sur mon ordi.

#include <iostream>
#include <SFML/Graphics.hpp>

int main()
{
    sf::Texture texture;
    if (!texture.loadFromFile("data/cursor_icon.png"))
        std::cout << "LoadFromFile failed" << std::endl;
    else
        std::cout << "LoadFromFile success" << std::endl;

        std::ifstream file;
    file.open("data/cursor_icon.png");
    std::vector<char> buffer_;
    std::streampos length;
        if (file.is_open())
    {
        file.seekg(0,std::ios::end);
        length = file.tellg();
        file.seekg(0,std::ios::beg);
        buffer_.resize((unsigned)length);
        file.read(&buffer_[0],length);

                file.close();
    }

    sf::Texture texture2;
    if (!texture2.loadFromMemory(&buffer_[0], (unsigned)length))
        std::cout << "LoadFromMemory failed" << std::endl;
    else
        std::cout << "LoadFromMemory success" << std::endl;
}

La sortie de console est la suivante:

LoadFromFile success
Failed to load image from memory. Reason : Image not of any known type, or corrupt
LoadFromMemory failed

Est-ce moi qui fait n'importe quoi? Ou est-ce cette fonction qui ne fait pas ce qu'elle devrait?

Merci d'avance pour votre réponse
Titre: Re : Problème avec la fonction loadFromMemory
Posté par: Laurent le Novembre 07, 2014, 10:07:16 pm
Il faut ouvrir le fichier en mode binaire, sinon il sera ouvert en mode texte et certains octets seront interprétés.

file.open("data/cursor_icon.png", std::ios::binary);
Titre: Re : Problème avec la fonction loadFromMemory [Résolu]
Posté par: blackmetal le Novembre 07, 2014, 10:16:56 pm
Merci beaucoup, ca marche :)