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
» Logiciel de planétarium.
Un petit programme pour un usage très spécifique Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Un petit programme pour un usage très spécifique Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Un petit programme pour un usage très spécifique Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Un petit programme pour un usage très spécifique Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Un petit programme pour un usage très spécifique Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Un petit programme pour un usage très spécifique Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Un petit programme pour un usage très spécifique Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Un petit programme pour un usage très spécifique Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Un petit programme pour un usage très spécifique Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Un petit programme pour un usage très spécifique Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Un petit programme pour un usage très spécifique Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Un petit programme pour un usage très spécifique Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Un petit programme pour un usage très spécifique Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Un petit programme pour un usage très spécifique Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Un petit programme pour un usage très spécifique Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
SSD interne Crucial BX500 2,5″ SATA – 500 ...
Voir le deal
29.99 €

 

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

Aller en bas 
2 participants
AuteurMessage
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
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 : 7017
Age : 74
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 : 52
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 : 52
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
-
» Un petit programme pour GRID
» Nouveau petit programme graphique
» Numerotation ligne de programme
» un petit programme musical
» Encore un petit programme de tracé a compiler

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: