FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Un petit programme pour un usage très spécifique Emptypar papydall Aujourd'hui à 2:21

» Gestion d'un système client-serveur.
Un petit programme pour un usage très spécifique Emptypar Klaus Hier à 23:59

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Un petit programme pour un usage très spécifique Emptypar Marc Hier à 12:14

» @Jack
Un petit programme pour un usage très spécifique Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Un petit programme pour un usage très spécifique Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Un petit programme pour un usage très spécifique Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Un petit programme pour un usage très spécifique Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Un petit programme pour un usage très spécifique Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Un petit programme pour un usage très spécifique Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Un petit programme pour un usage très spécifique Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Un petit programme pour un usage très spécifique Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Un petit programme pour un usage très spécifique Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Un petit programme pour un usage très spécifique Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Un petit programme pour un usage très spécifique Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Un petit programme pour un usage très spécifique Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cartes Pokémon 151 : où trouver le ...
Voir le deal

 

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

Aller en bas 
2 participants
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Un petit programme pour un usage très spécifique Empty
MessageSujet: Un petit programme pour un usage très spécifique   Un petit programme pour un usage très spécifique EmptySam 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
papydall

papydall


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

Un petit programme pour un usage très spécifique Empty
MessageSujet: Re: Un petit programme pour un usage très spécifique   Un petit programme pour un usage très spécifique EmptySam 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
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Un petit programme pour un usage très spécifique Empty
MessageSujet: Re: Un petit programme pour un usage très spécifique   Un petit programme pour un usage très spécifique EmptySam 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
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Un petit programme pour un usage très spécifique Empty
MessageSujet: Re: Un petit programme pour un usage très spécifique   Un petit programme pour un usage très spécifique EmptyDim 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
Contenu sponsorisé





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

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
-
» Nouveau petit programme graphique
» Un très petit film 100% Panoramic
» Numerotation ligne de programme
» Encore un petit programme de tracé a compiler
» un petit programme musical

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: