AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Lire un fichier bmp

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
M@d_Doc
Modérateur
avatar

Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

MessageSujet: Lire un fichier bmp   Mer 14 Sep 2011 - 13:39

Comment faire un draw_getpixel() plus rapide sans avoir à afficher des trucs à l'écran?

Je viens de faire un petit pack de scripts permettant de choper directement la couleur d'un pixel à l'intérieur d'un fichier bmp 24 bit classique.
Il me semble avoir déjà vu ça quelquepart sous forme de DLL, mais je trouvais intéressant de le refaire purement en gml... et ça marche :p

Le principal avantage, c'est surtout que c'est pas mal plus rapide que la fonction de base de GM (voir screens).
Réalisé dans une room à 900fps, avec pour seul différence, la méthode de récupation de couleur:



Un des autres avantages qui me vient juste à l'esprit, c'est qu'il est possible de choper la couleur de quelquechose sans avoir à l'afficher à l'écran, et ça, c'est quand même vachement plus propre.

J'ai essayé de simplifier au maximum l'utilisation des scripts. En gros, voilà la marche à suivre :

Au début de la room, il faut 'charger' le bmp :
Code:
my_bmp = bmp_open('nomDuBMP.bmp')

Quand on veux une couleur.... on la cherche, pardi!

Code:
color = bmp_get_color(my_bmp,x,y)

Et quand on a fini (fin de la room, fin du jeu...)
Code:
bmp_close(my_bmp)

J'ai aussi prévu des fonctions supplémentaires, pour ceux qui veulent vraiment fouiner dans le bmp :

bmp_get_offset(bmp) : retourne à quel index commence le data field (la première adresse où se trouve les infos couleurs dans le bmp)
bmp_get_width(bmp) : retourne la largeur (en pixels) du bmp
bmp_get_height(bmp) : je vous laisse deviner

bmp_read(bmp,index,length) : retourne un nombre, correspondant à la chaine hexa commencant en 'index', sur une longueur de 'length' bytes.
C'est fonction est relativement pratique, car gm donne un integer quand on lit un byte, qu'il faut passer en hexa, retourner (spécial dédicace à little endian), et assembler les différends bytes (toujours en hexa inversé, vous suivez?), puis tout remettre en nombre décimal.


Ah oui, un lien de téléchargement.

Dans le zip, il y a un .exe et un gmk de démonstration, un fichier bmp et les deux screens ci dessus.
Ah oui : si vous dézippez pas, ça marchera pas : faut avoir accès au bmp pour... lire dans le bmp.

_________________
Tous les icones de gm utilisables sur le cbna ICI
Revenir en haut Aller en bas
http://www.lecbna.org
 
Lire un fichier bmp
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu] Problème avec fichiers BKH
» A vos claviers les experts pour savoir comment changer une extension de fichier ha11
» [résolu]fichier ODT
» Transfert de fichier lourd via Megaupload
» [résolu]impossible de publier un fichier .ged

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: