Page 1 sur 1

Logiciel de creation terrain

Publié : dim. 11/janv./2009 21:01
par TARD
Bonjour a vous tous, j'ai un petit souci pour pouvoir enregistrer une image en nivaux de gris quelqu'un a t'il une idée ???

voila le probleme:
[url=http://sd-1.archive-host.com/memb ... in.zip[/b]
[/url]

dans le logiciel doont je fait il m'est impossible de lire les fichiers créer pour Terrain.png

Pour info:
Apprès avoir visualiser presser sur ESCAPE pour avoir la sourie
NE PAS INTERVENIR SUR L'IMAGE DU TERRAIN sinon le probleme dont je vous parle va arriver.(pour cela vous avez une sauvegarde de terrain.png dans nouveaux dossier :wink: )

Re: Logiciel de creation terrain

Publié : lun. 12/janv./2009 0:20
par Anonyme
TARD a écrit :Bonjour a vous tous, j'ai un petit souci pour pouvoir enregistrer une image en nivaux de gris quelqu'un a t'il une idée ???


Tu récupère la couleur du pixel

Code : Tout sélectionner

Color = point(x,y)
Red   =  Red(Color)
Green = Green(Color)
Blue = Blue(Color)
tu fait une moyenne des trois composantes :

Code : Tout sélectionner

Gray = ( Red + Green + Blue )  / 3

Tu balance en RGB :

Code : Tout sélectionner

GrayColor = Rgb(Gray,Gray,Gray)
@+

Publié : lun. 12/janv./2009 12:43
par Patrick88
et pour obtenir la teinte "cépia" des vieux appareils photo ? ou le filtre des nouveaux

pat

Publié : lun. 12/janv./2009 15:58
par Geo Trouvpatou
Salut.

Décidément j'ai une config spéciale.
Avec l'exe fournit d'origine ça plante et en compilant moi-même tout est OK.

Bye.

Publié : lun. 12/janv./2009 17:15
par TARD
Merci Cpl.Bator mais j'y avais deja penser mais cela ne fonctionne pas

Code : Tout sélectionner

Enumeration
 #image_0
 #image 
 #image_1
 #window_0
 #button_1
 #button_2


EndEnumeration

UseJPEG2000ImageEncoder()
UseJPEGImageEncoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()

Procedure Convertir(ImageID) 
StartDrawing(ImageOutput(ImageID)) 
For y = 0 To ImageHeight(ImageID)-1 
   For x = 0 To ImageWidth(ImageID)-1 
    Color = Point(x,y) 
    Red     = Red(Color) 
    Green = Green(Color) 
    Blue    = Blue(Color)
    Gray = (Red+Green+Blue)/3 
    Plot(x,y,RGB(gray,gray,gray))
   Next 
Next    
StopDrawing() 
EndProcedure 


CreateImage(#image_0,513,513,8)
;Debug ImageDepth(#Image_0)
If OpenWindow(#Window_0, 0, 0, 600, 550, "Créateur de terrain",#PB_Window_ScreenCentered| #PB_Window_TitleBar )
 ImageGadget(#image_1, 80, 0, 513, 513, ImageID(#image_0))
 ButtonGadget(#button_1,0,10,80,20,"Ouvrir")
 ButtonGadget(#button_2,0,40,80,20,"Fermer")
 
Repeat  
    Event = WaitWindowEvent()
   If Event = #PB_Event_Gadget
   
   If EventGadget()=#button_2
    End
   EndIf 
   
   If EventGadget()=#button_1
    fichier$=OpenFileRequester("ouvrir image","c:\","*.*",0)
    LoadImage(#image,fichier$,8)
   ; Debug ImageDepth(#Image)
    ResizeImage(#image,513,513)
    SetGadgetState(#image_1,ImageID(#image)) 
    Convertir(#image)
    SetGadgetState(#image_1,ImageID(#image))
   ; Debug ImageDepth(#Image)
    fichiersauve$=SaveFileRequester("sauvegarde image","c:\","*.*",0)
    SaveImage(#image,fichiersauve$,#PB_ImagePlugin_PNG)
   EndIf 
   
   EndIf 
   ForEver
   
EndIf 
Ceci est pour transformer l'image choisie en nuance de gris mais ca ne le ramene pas a la profondeur de 8

Publié : lun. 12/janv./2009 17:20
par Anonyme
@Geo , il faut la dll engine3D.dll (elle est dans pb/compiler)
Ceci est pour transformer l'image choisie en nuance de gris mais ca ne le ramene pas a la profondeur de 8

Ton code transforme bien en nuance de gris , pourtant , qu'est ce que tu veut dire par profondeur de 8 ? car pb utilise du 24 bits pour encoder les images.

Publié : lun. 12/janv./2009 17:36
par Anonyme
et pour obtenir la teinte "cépia" des vieux appareils photo ? ou le filtre des nouveaux

pat

Tu converti en niveau de gris puis
tu mélanges avec une couleur brunie.

ComposanteFinale = (ComposanteA + ComposanteBrunie)/2

Publié : lun. 12/janv./2009 17:36
par TARD
La profondeur 8 bits veux dir qu'elle est bien en nuance de gris
regarde dans l'aide de pure basic pour ImageDepth()

Syntaxe

Resultat = ImageDepth(#Image)
Description

Renvoie le niveau de couleurs de l'#Image spécifiée. Ce niveau est mesuré en nombre de plans-couleurs que l'image possède. Par exemple, une image dont les couleurs sont codées sur 24 bits (16 millions de couleurs possibles) renverra la valeur 24. Une image en 256 couleurs renverra 8 (codage sur 8 bits). Une image en noir et blanc renverra 1.

Je pense que c'est pour cela que ça ne fonctionne pas

J'ai oublier de metre *.png a une ligne:

Code : Tout sélectionner

   fichiersauve$=SaveFileRequester("sauvegarde image","c:\","*.png",0)

Publié : lun. 12/janv./2009 18:02
par Patrick88
merci

pat

Publié : lun. 12/janv./2009 18:24
par Anonyme
Qu'est ce que ca change pour ton éditeur de terrain , je ne saisi pas.

Ton image est nuancer de blanc et de noir , la hauteur de ton terrain va de 0 à 255 , quand tu lis la couleur pour définir la hauteur , tu prends n'importe quel composante (rouge,vert,ou bleu) , vu que c'est une nuance de gris , les composantes on la même valeur, de 0 a 255.

Publié : lun. 12/janv./2009 20:31
par Geo Trouvpatou
Effectivement Cpl.Bator c'était bien "Engine3D.dll" manquant qui faisait planter le tout.
Merci.

Bye.

Publié : lun. 19/janv./2009 20:09
par TARD
Voici une petite nouvelle version mais j'ai creer une partie avec dreamotion3D donc voici le lien:
http://www.dreamotion3d.com/

Ou alors voici mon lien:
Voir le Fichier : PureBasicDM3D.zip

Le logiciel :
Voir le Fichier : Terrain_75.zip

Si une personner pouvant m'aider a compiler le code car l'executable me demande le fichier dreamotion3d.dll
Merci et dite vos impréssion