Ouvrir un fichier bitmap 24bit octets par octets Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème



AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
-17%
Le deal à ne pas rater :
PHILIPS Centrale vapeur HI5900/22 5,2 bar
59.99 € 71.99 €
Voir le deal

 

 Ouvrir un fichier bitmap 24bit octets par octets

Aller en bas 
AuteurMessage
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Ouvrir un fichier bitmap 24bit octets par octets Empty
MessageSujet: Ouvrir un fichier bitmap 24bit octets par octets   Ouvrir un fichier bitmap 24bit octets par octets EmptySam 5 Déc 2009 - 16:43

Voila une fonction qui lit les bmp 24bits octets par octets .
Cette fonction retourne l'id de la surface ou est stockée l'image.

Cette fonction est juste dans un but de compréhension de la structure des fichiers bmp , donc n'est pas faite pour être utilisé dans un projet. (GM étant lent dans la lecture des fichiers et aussi dans la gestion des surfaces)

Attention : ne pas lire un bimap trop grand pour ne pas attendre trop longtemps lors du chargement.

Voici la fonction :
Load_bmp24(filename)
Code:

var f, surf, w, h, color, i, a;
f = file_bin_open(argument0,0)

if(file_bin_read_byte(f) != 66)
show_error("File isn't .bmp", 0)

file_bin_seek(f,18)

w = (file_bin_read_byte(f)    ) + (file_bin_read_byte(f)<<08)
  +(file_bin_read_byte(f)<<16) + (file_bin_read_byte(f)<<24)
if(!w) show_error('Error',0)

h = (file_bin_read_byte(f)    ) + (file_bin_read_byte(f)<<08)
  +(file_bin_read_byte(f)<<16) + (file_bin_read_byte(f)<<24)
if(!h) show_error('Error',0)

file_bin_seek(f,28)
if(file_bin_read_byte(f) != 24)
show_error('Wrong depth color',0)

surf = surface_create(w,h)
surface_set_target(surf)
file_bin_seek(f,54)

for(i=0 ; i<h ; i+=1)
{
    for(a=0 ; a<w ; a+=1)
    {
        color = (file_bin_read_byte(f)<<16) + (file_bin_read_byte(f)<<08)
              + (file_bin_read_byte(f)    )
        draw_point_color(a,h-i,color)
    }
    for(a=0 ; a<w mod 4 ; a+=1) file_bin_read_byte(f);
}
surface_reset_target()

file_bin_close(f)
return surf

Pour voir l'image utilisés draw_surface et n'oubliez pas de liberer la surface.

Bien entendu ceci ne s'adresse qu'au programmeurs chevronnés :p_lol:

Sinon @++
:p_bye:
Revenir en haut Aller en bas
 
Ouvrir un fichier bitmap 24bit octets par octets
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» ouvrir un fichier
» ouvrir un fichier au bloc note
» [Résolu] Lire un DWORD (Big-endian) à partir de 4 octets en décimal
» Compilation de fichier/Fichier Externe
» Ouvrir un gmk

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