Motion café forums
Image qui remplit automatiquement la compo - Version imprimable

+- Motion café forums (http://forum.motion-cafe.com)
+-- Forum : Local Technique (http://forum.motion-cafe.com/forum-17.html)
+--- Forum : Scripts & Expressions (http://forum.motion-cafe.com/forum-18.html)
+--- Sujet : Image qui remplit automatiquement la compo (/thread-178.html)



Image qui remplit automatiquement la compo - Mr Brown - 02-05-2018

Hello tout le monde !

Première fois que je poste sur le forum pour poser une question, j'en suis tout ému.


Je suis en train de faire un template pour pouvoir accélérer grandement le process d'un format destiné aux réseaux sociaux.
J'ai un format vertical (type stories Instagram) et un format facebook (format carré). Le but de ce template est de faire une seule fois le travail (et non deux fois).
Mon template est fait d'image et de texte animés mais je bloque sur un point : la taille de mes images.

Je voudrais que mon image remplisse ma compo dans laquelle elle se trouve, mais en gardant ses proportions.

J'avais créé cette expression qui fonctionne bien :

Code :
sizeY = 100*thisComp.height/thisLayer.height;
sizeX = sizeY;
[sizeX, sizeY]


Mais cette expression fonctionne seulement pour les images verticales. Pour des images horizontales, mon image ne remplira pas l'intégralité de ma composition.
Pour des images horizontales, il me faudrait une expression du style :


Code :
sizeX = 100*thisComp.width/thisLayer.width;
sizeY = sizeX;
[sizeX, sizeY]


Afin d'éviter de changer d'expression à chaque changement de format d'images, je pensais créer une expression avec des conditions (si sizeX est plus grand que sizeY, utilise cette expression, sinon, utilise l'autre). Mais j'avoue que je suis perdu, ne sais pas comment faire, et ne sait pas si c'est possible...
Je sais que ce forum regroupe beaucoup de génies, et celui ou celle qui m'aidera aura ma gratitude éternelle.

Merci !
(si besoin de plus d'explications, n'hésitez pas !)

Re-hello !

Eh bien je viens de trouver la réponse comme un grand.
Voici l'expression dans son intégralité :



Code :
sizeY = 100*thisComp.height/thisLayer.height;
sizeX = sizeY;
tailleX = 100*thisComp.width/thisLayer.width;
tailleY= tailleX;

if(sizeY>tailleX) {     // Première expression pour les images verticales
[sizeX, sizeY]
}

else {                  // Seconde expression pour les images horizontales
[tailleX, tailleY]
}


Cette expression est à coller dans la propriété "Echelle" de vos images.

Un peu d'explication :
J'ai changé le nom des valeurs d'une expression à l'autre pour éviter les conflits dans ma condition.
J'ai seulement écrit "Si(if) l'échelle en Y est supérieure à mon échelle en X, utilise l'expression utilisant size. Sinon(else), utilise l'expression utilisant taille."

J'avoue me sentir puissant, première fois que j'arrive à faire des expression par moi même ^^

En espérant aider pour les personnes qui se poseraient la question... Wink


RE: Image qui remplit automatiquement la compo - lakpo - 03-05-2018

https://fr.wikipedia.org/wiki/M%C3%A9thode_du_canard_en_plastique


RE: Image qui remplit automatiquement la compo - Viclio - 03-05-2018

Ah excellent, je ne connaissais pas, je la ressortirai !

Mine de rien, c'est pour ça que j'adore donner des formations : j'apprends autant que les stagiaires simplement parce qu'en expliquant, j'apprends aussi Smile


RE: Image qui remplit automatiquement la compo - kana - 04-05-2018

@mr brown

voici une méthode qui te permettra de remplir ta compo quelque soit son format. Une seule expression, pas besoin de choisir du coup !
Dis moi si ça marche Wink


Code :
sw=thisLayer.width;
Sw=thisComp.width;
sh=thisLayer.height;
Sh=thisComp.height;
S=[Sw*100/sw,Sh*100/sh]
ratioL = sw/sh;
ratioC = Sw/Sh;
ratioL<ratioC ? [S[0],S[0]] : [S[1],S[1]]



RE: Image qui remplit automatiquement la compo - Mr Brown - 07-05-2018

(04-05-2018, 12:17 PM)kana a écrit : @mr brown

voici une méthode qui te permettra de remplir ta compo quelque soit son format. Une seule expression, pas besoin de choisir du coup !
Dis moi si ça marche Wink


Code :
sw=thisLayer.width;
Sw=thisComp.width;
sh=thisLayer.height;
Sh=thisComp.height;
S=[Sw*100/sw,Sh*100/sh]
ratioL = sw/sh;
ratioC = Sw/Sh;
ratioL<ratioC ? [S[0],S[0]] : [S[1],S[1]]

Ton expression fonctionne très bien, merci !
J'ai deux expressions qui fonctionne pour le même besoin, c'est Noël !