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
» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Aujourd'hui à 19:12

» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 16:47

» track_bar circulaire
par Klaus Aujourd'hui à 13:54

» API Windows
par Klaus Aujourd'hui à 3:21

» Cartes de voeux, menus, etc.
par JL35 Hier à 17:48

» Mah-Jong européen new-look
par jjn4 Hier à 15:48

» a l'aide klaus
par Minibug Hier à 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Hier à 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
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 : 5863
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 : 5613
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 : 5863
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 : 5863
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 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: