Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 11 April 2008 22:16

Arthy
Participant actif
Date d'inscription: 27 Mar 2007
Messages: 61

Transformer du binaire en png avec IDL

Bonjour,

J'aimerai connaitre comment transformer une image binaire en jpeg ou png et en affichant à coté une légende pour la palette des couleurs de sorte qu'en regrdant la carte, on puisse approximer les valeurs prises.

J'ai essayé mais je suis parvenu à 2 résultats non satisfaisants :

une image sur l'écran que je n'arrive pas à enregistrer en fichier.png
un fichier png par usage simple de la fonction create_png sue lqeul ne figure pad de légende et en noir sur blanc uniquement
Mon image est une binaire codée sur 16 bits et dont les valeurs supérieures à 1000 sont aberrantes

Voici le code utilisé pour cette image

Code:

n_col=5600
n_lin=2800
wsa=intarr(n_col,n_lin)
alb=intarr(n_col,n_lin)
alb1=bytarr(n_col,n_lin)

red = INDGEN(256)  
green = INDGEN(256)  
blue = INDGEN(256)

openr,lun,filename,/get_lun
readu,lun,wsa
free_lun,lun

For J = 0,n_lin-1 Do Begin
  For I = 0,n_col-1 Do Begin
    alb(I,n_lin-1-J)=wsa(I,J)
    Endfor
Endfor

result=where(alb gt 1000,count)
if (count gt 0) then alb(result)=1000
Result = BYTSCL( alb, MAX=1000, MIN=0)
WRITE_PNG, filename.png, result,red,green,blue

Arthy

Dernière modification par Arthy (Fri 11 April 2008 22:17)

Hors ligne

 

#2 Mon 14 April 2008 10:35

Cla1r3
Juste Inscrit !
Date d'inscription: 7 Sep 2007
Messages: 7

Re: Transformer du binaire en png avec IDL

Bonjour Arthy,

Imaginons que ton image est affichee en couleurs (avec une palette) sur une fenetre type WINDOW, pour la capturer, tu peux utiliser la fonction TVRD, avec le mot-clef TRUE={1|2|3} pour specifier l'entrelacement de ton image capturee (organisation des 3 plans R, G et B).
tu sauvegardes alors une image RGB 24-bit:


;; ici, ajoute le code qui cree ton image couleur + superposition de sa legende sur une fenetre de type WINDOW
capture = TVRD(TRUE=1)
WRITE_PNG, 'C:\temp\result.png', capture

Si tu souhaites sauvegarder une image avec une palette, tu peux utiliser COLOR_QUAN pour convertir ton image 24-bit en 8-bit + palette :
capture = TVRD(TRUE=1)
capture2D = COLOR_QUAN(capture, 1, red, green, blue)
WRITE_PNG, 'C:\temp\result.png', capture, red, green, blue

Pour l'histoire de la 'legende' sur l'image, tu parles d'une barre de couleurs affichee a cote ? As-tu commence un code ?

Ca change rien, mais c'est moins long a ecrire:
Utilise:
alb = ROTATE(wsa, 7) ;rotation 270 degres
plutot que:
;For J = 0,n_lin-1 Do Begin
;  For I = 0,n_col-1 Do Begin
;    alb(I,n_lin-1-J)=wsa(I,J)
;    Endfor
;Endfor


Et pour que toutes les valeurs du tableau soient inferieures a 1000 (toutes celles etant superieures a 1000 sont seuillees a 1000)
alb = alb < 1000

;result=where(alb gt 1000,count)
;if (count gt 0) then alb(result)=1000


Claire

Hors ligne

 

#3 Mon 28 April 2008 18:11

Arthy
Participant actif
Date d'inscription: 27 Mar 2007
Messages: 61

Re: Transformer du binaire en png avec IDL

Salut

Merci pour ta réponse et tes conseils

Hors ligne

 

Pied de page des forums

Powered by FluxBB