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

Auteur Sujet: Problème avec la fonction loadFromMemory [Résolu]  (Lu 1479 fois)

0 Membres et 1 Invité sur ce sujet

blackmetal

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
Problème avec la fonction loadFromMemory [Résolu]
« 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
« Modifié: Novembre 07, 2014, 10:17:37 pm par blackmetal »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec la fonction loadFromMemory
« Réponse #1 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);
Laurent Gomila - SFML developer

blackmetal

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
    • E-mail
Re : Problème avec la fonction loadFromMemory [Résolu]
« Réponse #2 le: Novembre 07, 2014, 10:16:56 pm »
Merci beaucoup, ca marche :)