L'école [RESOLU] Petit montage vidéo Comment juxtaposer deux images pour et en sauvegarder qu'une seule.
igal
Membre non connecté
Conseiller Municipal
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
Un peu d'aide Edité par igal Le 22/11/2013 à 19h33
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
Un peu d'aide Edité par igal Le 22/11/2013 à 19h33
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é
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é
igal
Membre non connecté
Conseiller Municipal
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
Voici un dessin pour mieux comprendre.
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
Voici un dessin pour mieux comprendre.
TurboSEB
Membre non connecté
Conseiller Municipal
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 perso ca me parais asser simple a faire a moin que j'ai pas compris ) Edité par TurboSEB Le 20/11/2013 à 23h15
(nb:de memoire au bout de 25ans a verifier la fonction copy perso ca me parais asser simple a faire a moin que j'ai pas compris ) Edité par TurboSEB Le 20/11/2013 à 23h15
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
Oui, c'est pas très clair ce que tu veux faire, Igal
Et puis tu charges et tu sauves en même temps ?
Déjà il y a un truc qui ne va pas ici :
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
Et puis tu charges et tu sauves en même temps ?
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
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:
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
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
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
@Métalion: Le but est de contenir Deux Frames en un seul chargement
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)
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)
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
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
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
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)
Voilà ce qu'il te faut (je crois) :
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
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
igal
Membre non connecté
Conseiller Municipal
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.
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.
TurboSEB
Membre non connecté
Conseiller Municipal
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie