FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» un nouveau editeur panobasic
par pascal10000 Hier à 21:52

» COMPILATEUR V 0.9 beta 7 du 10 aout 2017
par Jack Hier à 20:23

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Hier à 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Hier à 19:58

» Compilateur FBPano
par jean_debord Hier à 8:49

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

» Troncature dans une image
par JL35 Mer 9 Aoû 2017 - 13:45

» A chacun son point de vue
par papydall Mar 8 Aoû 2017 - 17:20

» Problème avec les chaines de caractères
par bignono Dim 6 Aoû 2017 - 9:33

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Un petit programme pour un usage très spécifique

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Un petit programme pour un usage très spécifique   Sam 7 Mar 2015 - 16:31

Pour simplifier mon programme de Barbarian, j'avais besoin de redimensionner toute une série de sprites (62 pour un personnage) à une taille donnée en ajoutant une partie noire en haut variant selon la taille du sprite pour obtenir l'image souhaitée avec le sprite en bas et la partie noire au dessus.
Plutôt que de passer de très longues minutes à le faire, j'ai fais un petit code qui pourra servir tel quel (en adaptant le chemin et la hauteur) ou avec quelques modifications à des personnes qui voudraient travailler avec des animations de sprites.

C'est un code très simple entre autre grâce à l'utilisation de KGF

Code:

dim a$ , i$ , i , rep% : rem Variables provisoires
dim nc : rem Numéro du du fichier courant
dim image_w%, image_h% : ' Dimension du sprite chargé
dim h : h=152  : ' Hauteur souhaitée
dim hmax       : ' Stocke la hauteur maximale trouvée

caption 0," Redimensionne les sprites à une hauteur précise"
  width 0,1000 : height 0,550

picture 1 : image 2 : picture 3

dlist 22 : ' Liste des fichiers contenant à traiter

dll_on "KGF.DLL"
hmax = h

dir_change "F:\Perso\Panoramic\Barbarian-jc\SpritesA"
a$=file_find_first$
while a$<>"_"
   if upper$(right$(a$,3)) = "BMP" then item_add 22,a$
   a$=file_find_next$
end_while
file_find_close

if count(22)>0
    for i=1 to count(22)
        a$=item_read$(22,1)
        height 1,600 : width 1,600 : color 1,0,0,0
        file_load 1,a$
        clipboard_copy 1
        pause 500
        rep% = dll_call0("LoadPicture")
        image_w% = dll_call0("GetPictureWidth")
        image_h% = dll_call0("GetPictureHeight")
        if image_h% < h
           width 3,image_w% : height 3,h : color 3,0,0,0
           2d_target_is 1
           2d_image_copy 2,0,0,image_w%,image_h%
           2d_target_is 3
           2d_image_paste 2,0,h-image_h%
           file_save 3,a$
        else
           if image_h% > h
              if image_h% > hmax then hmax = image_h% : caption 0, "Hauteur maximum trouvée: " + str$(hmax)
           end_if
        end_if
        item_delete 22,1
    next i
end_if

caption 0," Redimensionnement terminé, hauteur maximale trouvée: "  + str$(hmax)
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5501
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Un petit programme pour un usage très spécifique   Sam 7 Mar 2015 - 17:10

J’ai testé sur des images  SANS PRENDRE LES PRECAUTIONS NECESSAIRES !!!
Et voilà, je me suis trouvé avec des images de la même taille et avec une partie noire en haut.
Tu n’as pas prévu l’opération inverse ?
A savoir éliminer les parties noires en haut des images !

Bon, à part mon étourderie (je dois lire AVANT de cliquer !), c’est une bonne idée pour un usage très spécifique. Cool
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Un petit programme pour un usage très spécifique   Sam 7 Mar 2015 - 19:29

MDR Smile Désolé Papydall, non je n'ai pas prévu l'opération inverse. C'est faisable l'opération inverse, mais ce serait long. Tu as 2 cas de figure. Soit tes images n'utilisent pas la couleur 0,0,0 principalement et dans ce cas, tu peux vérifier par exemple si les 10 premiers points sont noirs et si oui, tu passes à la ligne suivante pour tester la couleur des 10 premiers points jusqu'à ce que tu tombes sur de points qui ne soient pas en noir. Tu obtiens alors la position de la ligne a recopier.
Tu peux alors facilement faire l'opération inverse. L'image 3 a pour hauteur la taille de l'image 1 - la hauteur trouvée.
C'est presque le même programme a par la partie détection de la première ligne non noir.
Si tes images contiennent beaucoup de noir, ça sera plus compliqué et à adapter selon le type d'image ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Un petit programme pour un usage très spécifique   Dim 8 Mar 2015 - 3:10

Un autre petit outil à adapter selon ses besoin, un programme qui extrait des sprites en fonction des coordonnées du rectangle où ils se trouvent, ajuste leur taille et les sauvegarde
Code:
' Etraire des sprites de la feuille de sprites
' X1, Y1, X2, Y2 , Nom du sprite
data 001, 001, 070, 123,Debout1
data 072, 001, 153, 126,Front1
data 155, 001, 240, 151,Front2
data 242, 001, 363, 122,Front3
data 365, 001, 430, 126,Retourne1
data 432, 001, 500, 123,Retourne2
data 504, 001, 568, 126,Retourne3
data 001, 128, 072, 251,Toile1
data 074, 154, 140, 275,Toile2
data 160, 154, 229, 278,Toile3
data 231, 154, 324, 278,Toile4
data 340, 128, 419, 245,ProtegeH
data 421, 128, 503, 253,Cou2
data 505, 128, 627, 250,Cou3
data 001, 277, 083, 400,Couptete1
data 085, 277, 155, 403,Couptete2
data 157, 280, 226, 403,Devant1
data 229, 280, 307, 391,Devant2
data 309, 280, 412, 391,Devant3
data 414, 256, 497, 380,Pied1
data 499, 256, 591, 381,Pied2
data 001, 401, 067, 508,Assis1
data 140, 405, 216, 488,Assis2
data 068, 405, 139, 488,Genou1
data 140, 405, 216, 488,Genou2
data 218, 405, 332, 488,Genou3
data 334, 393, 355, 416,Tete1
data 357, 393, 378, 418,Tete2
data 379, 393, 409, 414,Tete3
data 333, 420, 359, 441,Tete4
data 361, 420, 384, 443,Tete5
data 386, 420, 411, 441,Tete6
data 413, 381, 463, 503,Marche1
data 464, 382, 514, 506,Marche2
data 515, 382, 570, 506,Marche3
data 001, 509, 071, 633,Attente1
data 072, 489, 156, 613,Attente2
data 157, 489, 241, 613,Attente3
data 242, 489, 320, 611,ProtegeD
data 322, 489, 398, 613,Vainqueur1
data 399, 507, 470, 631,Vainqueur2
data 472, 507, 540, 645,Vainqueur3
data 001, 719, 069, 833,Touche1
data 070, 717, 136, 835,Touche2
data 137, 699, 212, 809,Saut1
data 213, 722, 293, 804,Saut2
data 213, 805, 335, 831,Mort4
data 001, 634, 067, 718,Roulade1
data 072, 614, 133, 647,Roulade2
data 135, 614, 175, 662,Roulade3
data 072, 649, 133, 682,Roulade4
data 176, 614, 242, 698,Roulade1i
data 243, 612, 319, 720,Tombe1
data 320, 632, 432, 678,Tombe2
data 434, 646, 539, 721,Tombe3
data 320, 679, 370, 776,Decap1
data 371, 723, 446, 792,Decap2
data 448, 739, 563, 763,Decap4
data 448, 764, 543, 820,Mort2
data 546, 765, 628, 816,Mort3

dim nom$, i : ' Variables provisoires
dim h : h=152  : ' Hauteur souhaitée
dim nb_sprite  :  nb_sprite =  62 - 3 + 1 : ' Nb = Derniere ligne de data - première + 1
dim xd, yd, xa, ya : ' Coordonnées du rectangle à copier

caption 0," Extracteur de sprites"
  width 0,1000 : height 0,1000

picture 1 : image 2 : picture 3
height 1,1000 : width 1,1000 : color 1,0,0,0

dll_on "KGF.DLL"

dir_change "F:\Perso\Panoramic\Barbarian-jc\Réservoir"
file_load 1,"sprites_rouge.bmp"

for i = 1 to nb_sprite
    read xd : read yd : ' Lit les coordonnées de départ
    read xa : read ya : ' Lit les coordonnées d'arrivée sur la feuille des sprites
    read nom$
    width 3,xa - xd : height 3, h : color 3,0,0,0
    2d_target_is 1
    2d_image_copy 2,xd,yd,xa,ya
    2d_target_is 3
    2d_image_paste 2,0,h - (ya - yd)
    file_save 3,nom$+".BMP"
    wait 40
next i
caption 0," Extraction des sprites efectuée"
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Un petit programme pour un usage très spécifique   

Revenir en haut Aller en bas
 
Un petit programme pour un usage très spécifique
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» petit probleme pour afficher un image sur mon forum...
» Petit soucis pour une map monde des inscrit
» Petit soucis pour le nom de mon " nouveau " Forum
» petit programme pour l'effet miroir et renverser
» Un petit programme pour GRID

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Les inutilitaires-
Sauter vers: