Bonjour à tous,
J'ai deux petites questions :
1) Est-ce normal qu'un image au format PNG me prenne 8mo de ram, or que sur le disque dur elle me prend 800 ko ?
2) Est-il possible de "loader" une partie d'une image grace à la SDL, et si oui, comment ?
1) Sur ton DD , elle est compressé par PNG , pas en RAM.
Convertie ton imag en bitmap et tu verra qu'elle devrai alors faire 8 Mo(puisque le format bmp ne compresse pas les données)
2) Tu charge ton image en entier et tu la découpe avec avec le 2eme paramtere de SDL_BlittSurface.
En effet il suffit au lieu de blitter sur l'ecran , de blitter sur une surface alloué dynamiquement
SDL travaille uniquement avec des images décompréssées de type bitmap. Donc lorsque tu charge ton png il est transformé en bitmap et ca prend beaucoup plus de place.
Pour charger des images dans la RAM tu crée une surface de la taille que tu veux avec SDL_CreateRGBSurface. Il y a des flag expliqués dans le tuto de matéo pour choisir de creer la surface en RAM ou en mémoire vidéo.
Je ne sais pas si tu peux cherger des morceaux directement, mais il est possible de tout charger puis de faire un blit dansune surface plus petite de la partie intéréssante.
Ou alors si tu veux le faire entièrement dans ton programme:
1) charger l'image complète
2) recouper la partie qui t'intéresse
3) coller la partie qui t'intéresse sur une nouvelle surface
4) deleter la première surface.
× 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.
* Un wrapper C++ pour sqlite * Une alternative a boost units