MSX Village forum

L'école [RESOLU] Petit montage vidéo Comment juxtaposer deux images pour et en sauvegarder qu'une seule.

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 20/11/2013 à 17h36
J'essais désespérément de trouver la solution pour le problème suivant.

La Source:
J'ai créé une vidéo en SCREEN 12 contenant une image dans sa moitié supérieur.
La Taille de du SCREEN 12 est de 256 X 212.
L'image occupe le SCREEN 12 tel que 256 X 106.

Mon intention est de:
1) Prendre la Demi image de la Source 1 et la placer dans la Destination 1 Haut
2) Prendre la Demi image de la Source 2 et la placer dans la Destination 1 Bas

Voici le listing que j'ai créé:

10 'save"convert.asc",a
20 WIDTH 80:SETVIDEO0,0,0:VDP(10)=0:VDP(9)=VDP(9)OR2:SCREEN12,,,,,0
30 I = 0:'INITIALISE LE COMPTEUR SOURCE = ZERO
40 BLOAD"image"+MID$(STR$(I),2)+".scc",S,&H0:' CHARGE LA SOURCE ALPHA
50 I=I:'MAINTIENT LE COMPTEUR POUR DESTINATION ALPHA
60 BSAVE"img"+MID$(STR$(I),2)+".scc",&H0,&H0,S:'SAUVE SUR LA DESTINATION ALPHA
70 I=I+1:'AUGMENTE LE COMPTEUR POUR LA SOURCE BETA
80 BLOAD"image"+MID$(STR$(I),2)+".scc",S,&H0:'CHARGE LA SOURCE BETA
90 I=I-1:'DIMINUE LE COMPTEUR POUR DESTINATION ALPHA
100 BSAVE"img"+MID$(STR$(I),2)+".scc",&H6900,&H9600,S:'SAUVEGARDE SUR LA MOITIE BASSE DE LA DESTINATION ALPHA
110 I=I+1:'AUGMENTE LE COMPTEUR POUR NOUVELLE IMAGE SOURCE
120 GOTO 40:'RETOUR AU DEBUT DE LA BOUCLE
[/code]

Le problème avec ce code est que malgré que je déplace l'image sur la moitié "Haut" ou Moitié "Basse" avant de sauvegarder, la partie "non occupée" de l'image sauvée vient écraser l'ancienne image.
Au finale, je me retrouve avec avec une séquence d'image Noir :moue

Un peu d'aide :oups Edité par igal Le 22/11/2013 à 19h33


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 20/11/2013 à 18h25
on peut mettre un offset sur le BLOAD ,S

exemples:
on charge une image

on sauve en 2 moitiées

BSAVE"1.SCC",&H0;&H69FF,S
BSAVE"2.SCC",&H6A00;&HD3FF,S

BLOAD"1.SCC",S,&H3000
BLOAD"2.SCC",S,&H-3000

ajuste les offsets pour centrer car je n'ai pas optimisé ;)


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 20/11/2013 à 22h09
Merci beaucoup Jipe mais le problème est que toutes mes images SOURCES se trouvent aux mêmes longitudes/latitudes.
C'est justement là mon plus gros problème.
J'ai bien essayé de le faire avec Virtualdub, mais j'ai pas trouvé de filtre qui fasse cela :moue

Voici un dessin pour mieux comprendre.


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 20/11/2013 à 23h09
En screen 12, y' a 2 pages comme en screen 8, donc faut charger alpha bload puis copier (copy (0.0)-(256.106),0 to (0.0),1) la partie haute en page 1 a la position 0.0 puis charger beta bload en page 0 et copier la partie haute page 0 en partie basse page 1 (copy (0.0)-(256.106),0 to (0.107),1) puis copier le resultat final en page 0 (copy (0.0)-(256.212),1 to (0.0),0) puis sauvegarder bsave avec ton system de comptage ^^
(nb:de memoire au bout de 25ans a verifier la fonction copy :oups perso ca me parais asser simple a faire :D a moin que j'ai pas compris :oups) Edité par TurboSEB Le 20/11/2013 à 23h15



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 21/11/2013 à 16h35
est ce que tu veux animer en temps réel a partir des images 256x212 ?

ou bien pré-sauvegarder des images en 256x106 dans ton disque dur pour les relire en boucle ensuite ?


:noel
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 21/11/2013 à 18h41
Oui, c'est pas très clair ce que tu veux faire, Igal :hum

Et puis tu charges et tu sauves en même temps ? :hum
Déjà il y a un truc qui ne va pas ici :
Code :
60 BSAVE"img"+MID$(STR$(I),2)+".scc",&H0,&H0,S:'SAUVE SUR LA DESTINATION ALPHA

Cette commande sauvegarde une image vide, puisque le début et la fin sont égals à zéro. Edité par Metalion Le 21/11/2013 à 18h48


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/11/2013 à 18h46
Salut Jipe.

Je souhaite relire ces images sur le MSX par la suite..

Je me suis servi de tes infos pour le code ci dessous:
Code TEXT :
 
10  'save"Montage.asc",a
20 WIDTH 80:SETVIDEO0,0,0:VDP(10)=0:VDP(9)=VDP(9)OR2:SCREEN12,,,,,0
30 I = 0
40 I=I:BLOAD"image"+MID$(STR$(I),2)+".scc",S,&H0
45 I=I:BSAVE"img"+MID$(STR$(I),2)+".scc",&H0,&H6A00,S
60 I=I+1:BLOAD"image"+MID$(STR$(I),2)+".scc",S,&H6B00
70 I=I-1:BSAVE"img"+MID$(STR$(I),2)+".scc",&H0,&HD3FF,S
80 I=I+1
90 GOTO 40
 


Ce code superpose deux images exactement comme décrit sur le schéma de principe au dessus.


Par contre, un problème se pose!
Lorsque l'on déplace BETA vers le BAS pour qu'elle soit en dessous de ALPHA, la toute extrémité de BETA (qui ne sert à rien et qui ne contient rien, vient plaquer une BARRE NOIRE par dessus l'image ALPHA.

Cette barre correspond à à une zone non visible en temps normal. Cette zone est normalement en dessous de l'image visible.
Il me semble que MsxLégend à été confronté à ce problème lorsqu'il a fait le fameux scrooling avec sa démo Terminator.

De mon coté, j'ai essayé d'inverser l'ordre des superposition des images ALPHA puis BETA ou encore BETA puis ALPHA, mais le problème ne fait que se déplacer en placant la BARRE de ALPHA cette fois par dessus BETA. Donc pas de solution de ce coté la :fou





Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 21/11/2013 à 18h56
Code :
40 BLOAD"image"+MID$(STR$(I),2)+".scc",S,&H0

Charge l'image en (0,0)

Code :
60 BSAVE"img"+MID$(STR$(I),2)+".scc",&H0,&H0,S

Sauvegarde une image vide, de (0,0) à (0,0)

Code :
80 BLOAD"image"+MID$(STR$(I),2)+".scc",S,&H0

Charge l'image en (0,0)

Code :
100 BSAVE"img"+MID$(STR$(I),2)+".scc",&H6900,&H9600,S

Sauvegarde sur disque l'image comprise entre $6900 et $9600 Edité par Metalion Le 21/11/2013 à 18h56


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/11/2013 à 18h57
@Métalion: Le but est de contenir Deux Frames en un seul chargement :D

Un truc du genre:
1) => VDP(24)=VDP(24)+106
2) Je charge l'image 1 entière mais seule la Frame du bas [BETA] est visible.
3) => VDP(24)=VDP(24)-106
4) Le Haut de l'image 1 devient visible (Il s'agit de la Frame [ALPHA])
5) Je temporise pour obtenir un temps d'affichage égale au reste de l'autre image
6) Retour à l'étape (1)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 21/11/2013 à 19h07
Un peu d'organisation et d'explications d'abord.

Donc, si j'ai bien compris, tu as une série d'images sur ton disque dur, qui ont toutes la taille de 256x106. Et tu veux les afficher à la suite l'une de l'autre, au centre de l'écran (si je comprends bien ton schéma). C'est ça ? Parce que si c'est ça, je ne comprends pas pourquoi tu veux deux images sur un seul écran :fou

EDIT : Bon, je ne comprends pas ce que tu veux en faire ensuite, mais je viens de comprendre que tu voulais joindre 2 images successives sur l'écran et sauvegarder l'ensemble. OK. Ton programme ne fait pas du tout ça. Edité par Metalion Le 21/11/2013 à 19h09


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 21/11/2013 à 19h16
Voilà ce qu'il te faut (je crois) :

Code :
10  'save"convert.asc",a
20 WIDTH 80:SETVIDEO0,0,0:VDP(10)=0:VDP(9)=VDP(9)OR2:SCREEN12,,,,,0
30 I = 0
40 BLOAD"image"+MID$(STR$(I),2)+".scc",S:I=I+1
50 BLOAD"image"+MID$(STR$(I),2)+".scc",S,&H6A00
60 BSAVE"fondu"+MID$(STR$((I+1)/2),2)+".scc",0,&HD3FF,S
70 I=I+1:GOTO 40


Les images "imagexxx.scc" étant les sources et "fonduxxx.scc" les images résultantes de la fusion. Edité par Metalion Le 21/11/2013 à 19h22


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/11/2013 à 19h32
Merci pour le code Metalion.

Tu as une idée pour ne pas afficher la barre noire?

Essais tn code, il devrait avoir le même souci :(


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 21/11/2013 à 19h51
Si il y a une barre noire, c'est qu'elle est dans l'image sauvegardée.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/11/2013 à 22h13
Voici un petit dessin pour expliquer ce qui se passe.



Lorsque l'on charge l'image en appliquant un décalage tel que:
BLOAD"IMAGE.SCC",S,&H6B00

L'image est donc délplacée vers le bas de 106 Pixels, mais la partie qui se trouve hors de l'écran et que j'ai identifié par BARRE NOIR fait le tour complet pour réapparaître tout en haut de l'écran comme décrit sur le schéma.


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 21/11/2013 à 22h53
Et pourquoi pas un chargememt des images en page 1 alternativement sans decalage suivie d'un COPY de la zone voulue en page 0, avant une sauvegarde final (je sais ch'ui lourd la :oups)



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie