2016-06-05 3 views
1

Je ne vais pas plus loin. Même après avoir regardé beaucoup, je n'ai pas trouvé de réponse. Ici, l'image à traiter:ImageMagick - Comment puis-je étirer les couleurs de bord des éléments d'une image avec un canal alpha?

[Ici l'image] [1] ->http://kohlhas-3d.de/1.png

problème Après que je suis en train de résoudre:

  1. j'ai un PNG avec un canal alpha
  2. premier je veux trouver tous les éléments du PNG
  3. alors je veux étirer la dernière couleur à la frontière d'environ 5 à 10 pixels sur [exemple étirement] [1] ->http://kohlhas-3d.de/1.jpg
  4. l'étirage doit être dans toutes les directions à partir du centre de chaque objet sur l'image (comme triangle, rectangle, ...)
  5. il est importent, que je garde la couleur de chaque pixel sur le bord

Est-ce possible? L'objectif est, à l'avenir, d'automatiser le processus avec ImageMagick.

Beaucoup de salutations à tous Anil

Répondre

1

J'ai eu un jeu avec Déformer et il est sans doute la voie à suivre, mais a besoin d'une enquête plus approfondie. Je travaillais sur une image plus petite et le code est fondamentalement une preuve de concept. Je pense que le bord est l'option clé et avec cet exemple j'ai réduit la taille de l'image redimensionnée tout autour de 20px dans la distorsion. Je ne sais pas comment vous obtiendriez les bords inclinés cependant. Je sais que vous ne voulez pas déformer l'original mais cela peut vous donner quelques idées sur la façon d'obtenir le résultat que vous voulez.

convert "1.png" -trim -matte -virtual-pixel edge -mattecolor none -interpolate Spline +distort BilinearForward "0,0 20,20 400,0 380,20 400,95 380,55 0,95 20,55" -trim +repage "result.png" 

Result of the code

+0

Belle technique :-) –

+0

Super! Je vous remercie. Quand nous le résolvons avec les autres parties, nous vous informerons tous. – user3787575

0

Je ne suis pas tout à fait sûr ce qui se passe sur les bords de l'image, mais cela devrait vous aider à démarrer ...

D'abord, je découpez tout transparent bords (avec -trim) afin que nous obtenions le modèle réel que vous cherchez à étendre. Puis clonez l'image et éliminez tout sauf la rangée supérieure de pixels (avec -crop). Ensuite, mettez à l'échelle cette rangée jusqu'à ce qu'elle atteigne 800 pixels de hauteur. Ensuite, remplacez la grande rangée supérieure par l'image originale dans l'ordre de traitement (en utilisant +swap) et ajoutez l'image originale sous la rangée supérieure allongée en hauteur.

convert cells.png -trim +repage \(+clone -crop x1+0+0 -scale x800! \) +swap -append result.png 

enter image description here

+0

Salut Marc, Merci, semble déjà très bien. L'image finale ressemble à quelque chose comme ça (faite en PS). http://kohlhas-3d.de/3.jpg Est-il possible d'étirer automatiquement tous les bords, comme vous l'avez fait avec la première rangée? Je veux dire pour tous les triangles. Merci beaucoup! – user3787575

+0

Tournez simplement le triangle jusqu'à ce que le côté suivant soit en haut et répétez la procédure ci-dessus - deux fois. –

+0

Ok, je comprends. Malheureusement, les côtés du triangle ne sont pas droits mais incurvés. Nous devons faire un workflow, qui résout le problème avec l'image comprenant 8 triangles et un rectangle. Y a-t-il une chance? – user3787575