Blender (jusqu'à 2.49)
Gérer une image tga 
à partir du blender python
 

Voir aussi : Module Image,
charger une image quelconque png,jpg,bmp ou tga

    Début   Index
précédentScript: lire une image TGA 
python:colimaçon Suivant

 
#---------------------------------------
# Module de Gestion d'une image TGA

#  fonctions de lecture, d'ecriture et de preparation
# de  l'espace memoire necessaire
#
#  J-m Soler 2002
# ce script est proposé sous licence GPL.
#---------------------------------------

#---------------------------------------
# Fonction : Buffer
#      --------------------------------------- 
#      Calcule et eserve l'espace memoire necessaire 
#      ---------------------------------------
#      Entree :
#        height=16,  hauteur en lignes, 16 par defaut
#        width=16,  longueur en pixel, 16 par defaut 
#        profondeur=3, nombre de plan , rvb par defaut
#        rvb=255 valeur maximale, blanc par defaut

#      Retour :
#        b 
#---------------------------------------
def Buffer(height=16, width=16, profondeur=3,rvb=255 ): 
""" 
    Buffer : reserve l'espace memoire necessaire 
    """ 
    p=[rvb] 
    b=p*height*width*profondeur 
    return b 

#---------------------------------------
# Fonction : read_tgafile
#      --------------------------------------- 
#      Lit le fichier  sur disque 
#      ---------------------------------------
#      Entree :
#            loc2            adresse+nom du fichier
#
#      Retour :
#            bitmap         tampom memoire
#            width           longueur en pixel
#            height           hauteur en ligne
#            profondeur   nombre de bits couleur
#---------------------------------------
def read_tgafile(loc): 
    f=open(loc,'rb') 
    #---------------------------------------
    # Liire 18 octets au debut du fichier
    #---------------------------------------
    entete=f.read(18) 
    #---------------------------------------
    # Afficher les valeurs en clair a lecran
    #---------------------------------------
    for t in entete: 
        print ord(t), 
    #---------------------------------------
    # Recuperer  les informations :
    #---------------------------------------
    width=ord(entete[13])*256+ord(entete[12]) 
    height=ord(entete[15])*256+ord(entete[14]) 
    profondeur=ord(entete[16])/8 
    l=profondeur*height*width 
    ee=f.read(l) 

    f.close() 
    n=0 
    bitmap= Buffer( height, width, 3) 

    for t in ee: 

          bitmap[n]= ord(t) 
          n+=1 

    return bitmap,width,height,profondeur 

#---------------------------------------
# Fonction : write_tgafile
#      --------------------------------------- 
#      Enregistre le fichier  sur disque 
#      ---------------------------------------
#      Entree :
#            loc2            adresse+nom du fichier
#            bitmap         tampom memoire
#            width           longueur en pixel
#            height           hauteur en ligne
#            profondeur   nombre de bits couleur
#
#      Aucun retour
#---------------------------------------
def write_tgafile(loc2,bitmap,width,height,profondeur): 
    f=open(loc2,'wb') 

    Origine_en_haut_a_gauche=32 
    Origine_en_bas_a_gauche=0 

    Data_Type_2=2 
    RVB=profondeur*8 
    RVBA= RVB+8

    entete0=[] 
    for t in range(18): 
      entete0.append(chr(0)) 

    entete0[2]=chr(Data_Type_2) 
    entete0[13]=chr(width/256) 
    entete0[12]=chr(width % 256) 
    entete0[15]=chr(height/256) 
    entete0[14]=chr(height % 256) 
    entete0[16]=chr(RVB) 
    entete0[17]=chr(Origine_en_bas_a_gauche) 

    #Origine_en_haut_a_gauche 

    for t in entete0: 
      f.write(t) 

    for t in bitmap: 
      f.write(chr(t)) 
    f.close() 

#---------------------------------------
# Test 
#---------------------------------------
if __name=="__main__":
    loc0='d:/jmsoler/util/blenderfile/' 
    loc1='test.tga' 
    loc=loc0+loc1 
    loc2=loc0+'test0z.tga' 

    mytga,width,height,profondeur=read_tgafile(loc) 

    #---------------------------------------
    #  La position du pixel localisé en p[y,x] avec y pour les lignes et 
    #  x pour les colonnes, se calcule ainsi: y*width+x)*3 
    #  le résultat doit correspondre à la valeur bleu, +1 pour le vert 
    #  +2 pour le rouge car ces valeurs sont ibnversées 
    #---------------------------------------
    for y in range(0,height): 
        for x in range(0, width): 
                mytga[(y*width+x)*3+2]= 255 

    write_tgafile(loc2,mytga,width,height,profondeur) 

    #---------------------------------------
    #  Creer une image blanche de 400x400 en RVB 
    #---------------------------------------
    loc3=loc0+'test1z.tga' 
    whiteimg=Buffer(400,400) 
    write_tgafile(loc3,whiteimg,400,400,3) 

 

précédentScript: lire une image TGA 
 python:colimaçon Suivant
Vers le  Haut de page

Les questions concernant cette page  peuvent être posées sur  :
 news://news.zoo-logique.org/3D.Blender


 

 

Livre en français
Blender : apprenez, pratiquez, Créez, livre, Ed. Campus Press, coll. Starter Kit
Blender Starter Kit

Forum
FAQ
Lexique
Didacticiels
Compilations
Blender2KT
Débuter
Modelage
Blender python
Materiaux
Lumière
Animation
API python (eng)
Archives nzn
Statistiques
Doc flash Sculptris
Galerie Sculptris

mon site de démos sur youtube