Question

Je dois placer une bordure dégradée alpha sur une image. Mon problème est de mélanger les angles pour qu'ils soient lisses là où se rencontrent les gradients horizontaux et verticaux. Je crois qu'il existe un algorithme standard qui résout ce problème. Je pense même l'avoir rencontré à l'école il y a de nombreuses années. Mais je n'ai pas réussi à trouver la moindre référence à l'une d'elles dans plusieurs recherches sur le Web.

(J'ai mis en place un motif de remplissage radial dans le coin, mais la transition n'est toujours pas assez lisse.)

Mes questions :

  1. S'il existe un algorithme standard pour ce problème, quel est le nom de et mieux encore, comment ça se passe mis en œuvre?

  2. Renoncer à tout algorithme standard, quel est le meilleur moyen de déterminer le pixel désiré valeur pour produire un gradient lisse dans les coins? (Faire un bon transition de la verticale dégradé à l'horizontale dégradé.)

MODIFIER : imaginez que je puisse insérer une image par-dessus une image plus grande. La plus grande image est en noir et la plus petite est en blanc. Avant de l'insérer, je souhaite mélanger la plus petite image à la plus grande en définissant la valeur alpha sur la plus petite image afin de créer une & "Bordure &" Transparente. autour de lui pour qu'il & "se fane &"; dans l'image plus grande. Fait correctement, je devrais avoir un dégradé régulier du noir au blanc, et je le fais partout sauf aux coins et au bord intérieur.

Au bord de la bordure du dégradé près du centre de l'image, la valeur serait 255 (non transparente). Lorsque la bordure se rapproche du bord extérieur, la valeur alpha se rapproche de 0. Dans les coins de l’image où vert & Amp; Les frontières d'horiz se rencontrent, vous vous retrouvez avec ce qui équivaut à une ligne diagonale. Je veux éliminer cette ligne et avoir une transition en douceur.

Ce dont j'ai besoin, c'est d'un algorithme qui détermine la valeur alpha (0 - 255) de chaque pixel qui se chevauche dans le coin d'une image lorsque les bords horizontal et vertical se rencontrent.

Était-ce utile?

La solution

Vraisemblablement, vous multipliez les deux gradients là où ils se chevauchent, non?

Ne savez pas comment utiliser un algorithme standard. Mais si vous utilisez un dégradé en forme de signoïde au lieu d’un dégradé linéaire, cela devrait éliminer le bord visible où les deux se chevauchent.

Une fonction sigmoïde simple est smoothstep (t) = t t (3 - 2 * t) où 0 < = t < = 1

Autres conseils

Si vous n'avez pas besoin qu'elle soit redimensionnable, vous pouvez simplement utiliser une simple carte alpha.

Cependant, j’avais jadis utilisé un simple fondu gaussien, avec la moyenne à l’endroit où je voulais que ce soit le dernier pixel totalement opaque. Si cela a du sens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top