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
» Planétarium virtuel.
par Pedro Alvarez Sam 21 Juil 2018 - 16:57

» Roues dentées
par jean_debord Sam 21 Juil 2018 - 10:40

» Attention arnaque !
par mindstorm Jeu 19 Juil 2018 - 19:18

» Qui fait quoi ?
par silverman Mer 18 Juil 2018 - 15:21

» ITEM_SELECT N,L pour synedit
par silverman Mer 18 Juil 2018 - 15:20

» Boussole
par jean_debord Mer 18 Juil 2018 - 11:06

» Roue à n faces
par Marc Dim 15 Juil 2018 - 22:16

» Exemple d'une nouvelle version d'un GRID
par Jean Claude Ven 13 Juil 2018 - 10:32

» Une simple question
par Oscaribout Sam 7 Juil 2018 - 23:20

» BUG sur l'objet TAB
par Jack Sam 7 Juil 2018 - 21:12

» Monopoly moderne
par jjn4 Sam 7 Juil 2018 - 15:06

» Récapitulatif ludothèque panoramic jjn4
par jjn4 Ven 6 Juil 2018 - 17:41

» Lignes ondulées
par JL35 Ven 6 Juil 2018 - 17:39

» bug off_activate 0 : sans d'effet
par silverman Ven 6 Juil 2018 - 13:02

» Position des objets d'un conteneur dans FBPano et Panoramic
par Navigateur Ven 6 Juil 2018 - 12:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2018
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

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

Aller en bas 
AuteurMessage
Jicehel

avatar

Nombre de messages : 5928
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Un petit programme pour un usage très spécifique   Sam 7 Mar 2015 - 14: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 : 5980
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 - 15: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 : 5928
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Un petit programme pour un usage très spécifique   Sam 7 Mar 2015 - 17: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 : 5928
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Un petit programme pour un usage très spécifique   Dim 8 Mar 2015 - 1: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
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» petit programme pour l'effet miroir et renverser
» Un petit programme pour GRID
» Les meilleures extensions Firefox pour protéger sa vie privée
» Vérification rapport ZHP - PC lent, bloque souvent ("pas de réponse")
» Un petit vote pour une bonne cause

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