Forum général.général convertir un PNG avec alpha chanel en jpeg avec convert

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
oct.
2005
Bonjour.

Je cherche une méthode pour convertir un PNG qui dispose d'un canal alpha, en jpeg.
Le problem c'est qu'avec convert (ImageMagick), la couleur par défaut utilisée pour convertir le canal alpha en couleur solide, c'est le noire.

J'aimerai pouvoir choisir la couleur de fond du futur jpeg, de façon à ce que la partie visible du PNG apparaisse par dessus et non sur du noire.

Bien entendu c'est pour traiter une grosse série d'images PNG, et il faut savoir que je ne connais pas à l'avance les dimensions des images, ces dernière étant variables.
Je ne peux peut être me servir d'un script pour Gimp mais j'aimerai autant éviter.

J'ai essayé plusieurs méthode avec convert, sans résultats pour le momemt...donc merci d'avance pour toute réponse.

Bonne journée à toutes et à tous.
  • # search the f* web

    Posté par  . Évalué à 1.

    http://www.cit.gu.edu.au/~anthony/graphics/imagick6/formats/(...)

    j'ai trouvé un paramètre genre :
    -transparent
    • [^] # Re: search the f* web

      Posté par  (site web personnel) . Évalué à 3.

      Le canal alpha dans une PNG peut être composé de niveaux de gris.

      Le paramètre -transparent ne force la transparence que sur une seule couleur, dont on indique les composante RVB. Cela n'a donc rien à voir avec l'utilisation d'un canal alpha sur 156 niveaux de gris.

      Merci quand même.

      J'ai trouvé la commande qu'il me fallait mais elle a une contrainte, je dois récupérer la taille de l'image initiale et forcer la taille de l'image d'arrivée, car entre les deux j'utilise une très grande image qui contient ma couleur de fond. Et si je ne force pas ces dimensions, mon image de destination à pris la taille du fond de couleur.

      Cela donne à l'origine quelque chose comme :
      composite -compose src-over test.png fond.png test.jpg

      Mais dans ce cas, test.jpg à les dimensions de fond.png

      Pour récupérer les dimensions d'une image c'est simple:
      identify -format "%w" test.png
      pour avoir la largeur de l'image...

      Avec ça je dois pouvoir faire un script, mais j'aurai bien aimé me passer de l'image de fond et je suis sur que c'est possible.
  • # Ma méthode actuelle

    Posté par  (site web personnel) . Évalué à 4.

    #!/bin/bash

    #récuperer la largeur de l'image à traiter
    let W=`identify -format "%w" test.png`

    #récuperer la hauteur de l'image à traiter
    let H=`identify -format "%h" test.png`

    #composer le résultat en forçant la taille et en posant la source au dessus du fond
    composite -geometry "$W"x"$H" -compose src-over test.png fond.png test.jpg

    - test.png est la source qui contient un canal alpha
    - fond.png est une image de très grande taille (supérieure à tous ce que je pourrai trouver au niveau des images sources)
    - test.jpg est l'image de destination

    Mais j'aimerai bien me passer de cette image de fond...
  • # Ma méthode actuelle

    Posté par  (site web personnel) . Évalué à 2.

    #!/bin/bash

    #récuperer la largeur de l'image à traiter
    let W=`identify -format "%w" test.png`

    #récuperer la hauteur de l'image à traiter
    let H=`identify -format "%h" test.png`

    #composer le résultat en forçant la taille et en posant la source au dessus du fond
    composite -geometry "$W"x"$H" -compose src-over test.png fond.png test.jpg

    - test.png est la source qui contient un canal alpha
    - fond.png est une image de très grande taille (supérieure à tous ce que je pourrai trouver au niveau des images sources)
    - test.jpg est l'image de destination

    Mais j'aimerai bien me passer de cette image de fond...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.