Page 1 sur 1
pb plugin fondu horizontal 4 et 5 images
Publié : 26 juil. 2014 15:26
par gilles54
Bonjour,
Je débute dans Phofiltre X et j'ai besoin de faire un fondu horizontal de 4 images qui ont toutes la même dimension 1024x768.
J'utilise le plugin trouvé sur jptom.free.fr (merci encore !) qui est le suivant :
F:64; //Taille de la zone commune
H:Max(H(I1),H(I2),H(I3),H(I4)); //Hauteur maximale des 4 images
S1:BStretch(I1,W(I1)*H/H(I1),H); //Adaptation hauteur Image 1
S2:BStretch(I2,W(I2)*H/H(I2),H); //Adaptation hauteur Image 2
S3:BStretch(I3,W(I3)*H/H(I3),H); //Adaptation hauteur Image 3
S4:BStretch(I4,W(I4)*H/H(I4),H); //Adaptation hauteur Image 4
W:W(S1)+W(S2)+W(S3)+W(S4)-F*3; //Taille de l'image totale
T1:Tile(S1,W,H); //Augmentation zone de travail Image 1
T2:Scroll(Tile(S2,W,H),W(S1)-F,0); //Augmentation zone de travail Image 2 et positionnement au bon endroit
T3:Scroll(Tile(S3,W,H),W(S1)+W(S2)-F*2,0); //Augmentation zone de travail Image 3 et pos. au bon endroit
T4:Scroll(Tile(S4,W,H),W(S1)+W(S2)+W(S3)-F*3,0); //Augmentation zone de travail Image 4 et pos. au bon endroit
X:X(T1); //Initialisation Dégradé
If(X<W(S1)-F,T1, //Image 1
If((X>W(S1))and(X<W(S1)+W(S2)-F*2),T2, //Image 2
If((X>W(S1)+W(S2)-F)and(X<W(S1)+W(S2)+W(S3)-F*3),T3, //Image 3
If(X>W(S1)+W(S2)+W(S3)-F*2,T4, //Image 4
If((X>=W(S1)-F)and(X<=W(S1)),AlphaBlend(T1,T2,X-W(S1)+F,F), //1er Fondu
If((X>=W(S1)+W(S2)-F*2)and(X<=W(S1)+w(S2)-F),AlphaBlend(T2,T3,X-W(S1)-W(S2)+F*2,F), //2ème Fondu
AlphaBlend(T3,T4,X-W(S1)-W(S2)-W(S3)+F*3,F))))))) //3ème Fondu
Par contre, je n'arrive pas à forcer pour que mon image finale soit en 2000 x 300 (obligatoire). Comment faire ?
Merci d'avance.
[Tom] Je modifie le titre pour mieux indexer le sujet [/Tom]
Re: pb plugin fondu horizontal 4 images
Publié : 26 juil. 2014 16:28
par Tom
Bonjour, et merci de t'intéresser à ce script,
Le problème que tu rencontres va nécessiter de faire des choix : (c'est un problème de rapport Hauteur/Largeur et de cadrage.)
- Soit tu traites tes 4 images de 1024 avec le plugin ce qui sera lourd en calcul et te donnera (4 x 1024) - (3 X 64) = 3904 pixels
Clic droit / Taille de l'image en conservant les proportions : 2000 pixels de large et 393 pixels en hauteur,
En sélectionnant toute l'image, clic droit dans la sélection, décocher "conserver les proportions" et porter la hauteur à 300 pixels.
Déplacer la sélection à la hauteur voulue et clic droit / Recadrer l'image.
- Soit tu veux garder toute la hauteur et réduire la taille à 300 pixels de haut, tes images feront alors 400 pixels de large et fois 4,
ça ne fait pas le compte des 2000.
- Soit tu anticipes sur la taille finale et tu déduis la largeur nécessaire de tes images (2000 + (3 x 64)) / 4 = 548 pixels par image,
et là il faudra recadrer la hauteur de tes images de 411 à 300 pixels. Et si tu conserves la zone commune (recouvrement fondu) de 64 pixels,
la fusion des 4 images 548 x 300 doit aboutir à une image de 2000 x 300.
Re: pb plugin fondu horizontal 4 images
Publié : 28 juil. 2014 8:57
par gilles54
Bonjour,
J'avance....
Voici mon script
F:32;
H:300;
S1:BStretch(I1,W(I1)*H/H(I1),H);
S2:BStretch(I2,W(I2)*H/H(I2),H);
S3:BStretch(I3,W(I3)*H/H(I3),H);
S4:BStretch(I4,W(I4)*H/H(I4),H);
S5:BStretch(I5,W(I5)*H/H(I5),H);
W:2000;
T1:Tile(S1,W,H);
T2:Scroll(Tile(S2,W,H),W(S1)-F,0);
T3:Scroll(Tile(S3,W,H),W(S1)+W(S2)-F*2,0);
T4:Scroll(Tile(S4,W,H),W(S1)+W(S2)+W(S3)-F*3,0);
T5:Scroll(Tile(S5,W,H),W(S1)+W(S2)+W(S3)+W(S4)-F*4,0);
X:X(T1);
If(X<W(S1)-F,T1,
If((X>W(S1))and(X<W(S1)+W(S2)-F*2),T2,
If((X>W(S1)+W(S2)-F)and(X<W(S1)+W(S2)+W(S3)-F*3),T3,
If((X>W(S1)+W(S2)+W(S3)-F*2)and(X<W(S1)+W(S2)+W(S3)+W(S4)-F*4),T4,
If(X>W(S1)+W(S2)+W(S3)+W(S4)-F*4,T5,
If((X>=W(S1)-F)and(X<=W(S1)),AlphaBlend(T1,T2,X-W(S1)+F,F),
If((X>=W(S1)+W(S2)-F*2)and(X<=W(S1)+w(S2)-F),AlphaBlend(T2,T3,X-W(S1)-W(S2)+F*2,F),
If((X>=W(S1)+W(S2)+W(S3)-F*3)and(X<=W(S1)+w(S2)+W(S3)-F*2),AlphaBlend(T3,T4,X-W(S1)-W(S2)-W(S3)+F*3,F),
AlphaBlend(T4,T5,X-W(S1)-W(S2)-W(S3)-W(S4)+F*4,F)))))))))
J'ai 2 problèmes :
- Le 4 ème fondu (oui je suis passé à 5 images) ne se fait pas !
- comment faire pour que le bout de la 5ème image en double n'apparaisse pas ?
Merci.
Re: pb plugin fondu horizontal 4 images
Publié : 28 juil. 2014 12:27
par Tom
Ah pas mal essayé, mais ta méthode va rencontrer plusieurs problèmes.
Pour un fondu horizontal de 5 images qui s'adapte à toutes les tailles sans déformation,
voilà ce que j'avais imaginé :
Attention erreur dans ce script. Voir le suivant, rectifié, un peu plus bas
Code : Tout sélectionner
//Assemblage Fondu horizontal de 5 images. Adaptation : jptom.free.fr
F:64; //Taille de la zone commune
H:Max(H(I1),H(I2),H(I3),H(I4),H(I5)); //Hauteur maximale des 5 images
S1:BStretch(I1,W(I1)*H/H(I1),H); //Adaptation hauteur Image 1
S2:BStretch(I2,W(I2)*H/H(I2),H); //Adaptation hauteur Image 2
S3:BStretch(I3,W(I3)*H/H(I3),H); //Adaptation hauteur Image 3
S4:BStretch(I4,W(I4)*H/H(I4),H); //Adaptation hauteur Image 4
S5:BStretch(I5,W(I5)*H/H(I5),H); //Adaptation hauteur Image 5
W:W(S1)+W(S2)+W(S3)+W(S4)+W(S5)-F*4; //Taille de l'image totale
T1:Tile(S1,W,H); //Augmentation zone de travail Image 1
T2:Scroll(Tile(S2,W,H),W(S1)-F,0); //Augmentation zone de travail Image 2 et positionnement au bon endroit
T3:Scroll(Tile(S3,W,H),W(S1)+W(S2)-F*2,0); //Augmentation zone de travail Image 3 et pos. au bon endroit
T4:Scroll(Tile(S4,W,H),W(S1)+W(S2)+W(S3)-F*3,0); //Augmentation zone de travail Image 4 et pos. au bon endroit
T5:Scroll(Tile(S5,W,H),W(S1)+W(S2)+W(S3)+W(S4)-F*4,0); //Augmentation zone de travail Image 4 et pos. au bon endroit
X:X(T1); //Initialisation Dégradé
If(X<W(S1)-F,T1, //Image 1
If((X>W(S1))and(X<W(S1)+W(S2)-F*2),T2, //Image 2
If((X>W(S1)+W(S2)-F)and(X<W(S1)+W(S2)+W(S3)-F*3),T3, //Image 3
If((X>W(S1)+W(S2)+W(S3)-F)and(X<W(S1)+W(S2)+W(S3)+W(S4)-F*4),T4, //Image 4
If(X>W(S1)+W(S2)+W(S3)+w(S4)-F*3,T5, //Image 5
If((X>=W(S1)-F)and(X<=W(S1)),AlphaBlend(T1,T2,X-W(S1)+F,F), //1er Fondu
If((X>=W(S1)+W(S2)-F*2)and(X<=W(S1)+w(S2)-F),AlphaBlend(T2,T3,X-W(S1)-W(S2)+F*2,F), //2ème Fondu
If((X>=W(S1)+W(S2)+W(S3)-F*3)and(X<=W(S1)+w(S2)+W(S3)-F*2),AlphaBlend(T3,T4,X-W(S1)-W(S2)-W(S3)+F*3,F), //3ème Fondu
AlphaBlend(T4,T5,X-W(S1)-W(S2)-W(S3)-W(S4)+F*4,F))))))))) //4ème Fondu
Tu as fait une petite erreur dans la ligne d'affichage de l'image T5 : cette expression comporte une référence à 4 largeurs d'images
et non 5, donc il ne faut compter que 3 intervalles F.
Le principal inconvénient de cette méthode est :
- soit de tronquer la dernière image pour que la largeur totale de l'ensemble tienne en 2000 pixels, si tes images sont au format 3/2. Mais pourquoi pas ?
- par contre avec des images au format 5/4 comme les tiennes, il va bégayer ce qui lui manque pour faire 2000 pixels. Pourquoi ?
- réduire sans déformation tes images à 300 pixels de haut, revient à réduire la largeur à 400 pixels (démonstration plus haut)
- donc 5 x 400 = 2000 pixels, mais tu réduis la largeur en opérant 4 fondus de 32 pixels, il manque 128 pixels pour faire le compte
donc le plugin répète 128 pixels à droite pour compléter à 2000.
Re: pb plugin fondu horizontal 4 images
Publié : 28 juil. 2014 14:00
par gilles54
Bonjour et merci pour la réponse.
J'ai recopié ton script mais le 3ème fondu se fait mal (entre l'image 3 et 4) et il n'y en a pas entre la 4 et la 5.
Re: pb plugin fondu horizontal 4 images
Publié : 28 juil. 2014 15:27
par Tom
Bien observé pour le 3ème fondu !!!
Petit manque de rigueur dans la logique pour le positionnement de l'image 4,
erreur que tu n'avais pas commise dans ton script d'ailleurs.
Rectifié dans le script suivant :
Code : Tout sélectionner
//Assemblage Fondu horizontal de 5 images. Adaptation : jptom.free.fr
F:64; //Taille de la zone commune
H:Max(H(I1),H(I2),H(I3),H(I4),H(I5)); //Hauteur maximale des 5 images
S1:BStretch(I1,W(I1)*H/H(I1),H); //Adaptation hauteur Image 1
S2:BStretch(I2,W(I2)*H/H(I2),H); //Adaptation hauteur Image 2
S3:BStretch(I3,W(I3)*H/H(I3),H); //Adaptation hauteur Image 3
S4:BStretch(I4,W(I4)*H/H(I4),H); //Adaptation hauteur Image 4
S5:BStretch(I5,W(I5)*H/H(I5),H); //Adaptation hauteur Image 5
W:W(S1)+W(S2)+W(S3)+W(S4)+W(S5)-F*4; //Taille de l'image totale
T1:Tile(S1,W,H); //Augmentation zone de travail Image 1
T2:Scroll(Tile(S2,W,H),W(S1)-F,0); //Augmentation zone de travail Image 2 et positionnement au bon endroit
T3:Scroll(Tile(S3,W,H),W(S1)+W(S2)-F*2,0); //Augmentation zone de travail Image 3 et pos. au bon endroit
T4:Scroll(Tile(S4,W,H),W(S1)+W(S2)+W(S3)-F*3,0); //Augmentation zone de travail Image 4 et pos. au bon endroit
T5:Scroll(Tile(S5,W,H),W(S1)+W(S2)+W(S3)+W(S4)-F*4,0); //Augmentation zone de travail Image 5 et pos. au bon endroit
X:X(T1); //Initialisation Dégradé
If(X<W(S1)-F,T1, //Image 1
If((X>W(S1))and(X<W(S1)+W(S2)-F*2),T2, //Image 2
If((X>W(S1)+W(S2)-F)and(X<W(S1)+W(S2)+W(S3)-F*3),T3, //Image 3
If((X>W(S1)+W(S2)+W(S3)-F*2)and(X<W(S1)+W(S2)+W(S3)+W(S4)-F*4),T4, //Image 4
If(X>W(S1)+W(S2)+W(S3)+W(S4)-F*3,T5, //Image 5
If((X>=W(S1)-F)and(X<=W(S1)),AlphaBlend(T1,T2,X-W(S1)+F,F), //1er Fondu
If((X>=W(S1)+W(S2)-F*2)and(X<=W(S1)+W(S2)-F),AlphaBlend(T2,T3,X-W(S1)-W(S2)+F*2,F), //2ème Fondu
If((X>=W(S1)+W(S2)+W(S3)-F*3)and(X<=W(S1)+W(S2)+W(S3)-F*2),AlphaBlend(T3,T4,X-W(S1)-W(S2)-W(S3)+F*3,F), //3ème Fondu
AlphaBlend(T4,T5,X-W(S1)-W(S2)-W(S3)-W(S4)+F*4,F))))))))) //4ème Fondu
Par contre, je n'ai pas vu d'anomalie pour le quatrième fondu ??? mais un train peut toujours en cacher un autre.
Re: pb plugin fondu horizontal 4 et 5 images
Publié : 28 juil. 2014 19:05
par gilles54
Merci beaucoup ! c'est nickel. Superbe outil
Re: pb plugin fondu horizontal 4 et 5 images
Publié : 29 juil. 2014 11:15
par Tom
Bonjour Gilles,
j'ai encore réfléchi à ton projet pour obtenir le moins mauvais cadrage, (puisqu'il faut recadrer les hauteurs) :
- il faut partir des contraintes : 2000 pixels de large au final
- utiliser une valeur de recouvrement fondu dont le total est divisible par 5 (le nombre d'images à assembler) : 30 pixels par exemple
- ce qui fait un total de 4 fondus x 30, soit 120 pixels, donc (2 000 + 120 )/ 5 =
424 pixels de large par image pour 300 pixels de haut avant traitement par le plugin.
Ajustement des images de départ ( 1024 X 768 ) :
- Clic droit dans l'image / Taille de l'image : Unités pixels, remplacer 1024 par 424, ce qui fait une hauteur de 318 pixels
- Ctrl + A, sélection de toute l'image / clic droit dans la sélection / Paramétrage manuel : Décocher "Conserver les proportions", remplacer 318 par 300
- menu Sélection / Copier la forme (pour la réutiliser sur les autres images réduites en largeur)
- Il suffit de positionner la sélection à la hauteur voulue (avec les flèches du clavier) pour rogner les 18 pixels excédentaires,
- puis clic droit dans la sélection / Recadrer l'image.
- réduire les 4 autres images à 424 de large et Alt + S + M (Sélection / Coller la forme), positionner et recadrer.
Ne pas oublier de modifier la valeur de la zone commune de fondu du script.