[PS] Alpha dans format BMP ou TGA

'lut tous,

Je cherche à fabriquer une image au format TGA ou BMP (ce dernier serait le mieux) avec un channel alpha dedans.
Moi, au début, j’étais naïf car j’aime les fleurs.
J’ai donc ouvert le ToShop, fait une petite image, ajouter un masque de fusion dans lequel j’ai fait un dégradé. J’ai regardé le résultat et j’ai soupiré d’aise.
Puis, j’ai enregistré en BMP et en TGA en précisant bien que je voulais 32 bits/pixel pour qu’il m’intègre l’alpha (de la bête transparence quoi).
Sauf que ce nain de ToShop s’en fout de l’alpha. Mon fichier est bien en 32 bits, mais les valeurs de l’alpha sont à 0. Il recompose bêtement le RGB comme s’il appliquait le masque de fusion.

Z’avez une solution ?
Thx

Antoine

J’y connais pas grand chose, mais il me semble que l’alpha, le BMP, il connait pas :stuck_out_tongue:

[quote name=‹ ColdFire › date=’ 25 Jul 2005, 14:01’]J’y connais pas grand chose, mais il me semble que l’alpha, le BMP, il connait pas :stuck_out_tongue:
[right][post=« 379995 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Bon problème résolu.
Et le BMP connaît bien l’alpha. C’est un format qui monte jusqu’à 32 bits. En fait, le BMP et le TGA c’est vraiment pareil :stuck_out_tongue:
Donc la méthode pour que ça marche c’est d’appeler un chat un chat. Donc pas de « masque de fusion », mais simplement… Ajouter une couche alpha dans l’onglet « Couches », comme on ajoute un calque :P"
Sauvegarde en BMP et là il me met bien des valeurs dans le 4e octet. Joie.

Valaaaa
Merci de votre attention
désolé

Antoine

[quote name=‹ AntoineViau › date=’ 25 Jul 2005, 14:12’]Bon problème résolu.
Et le BMP connaît bien l’alpha. C’est un format qui monte jusqu’à 32 bits. En fait, le BMP et le TGA c’est vraiment pareil :stuck_out_tongue:
Donc la méthode pour que ça marche c’est d’appeler un chat un chat. Donc pas de « masque de fusion », mais simplement… Ajouter une couche alpha dans l’onglet « Couches », comme on ajoute un calque  :P"
Sauvegarde en BMP et là il me met bien des valeurs dans le 4e octet. Joie.

Valaaaa
Merci de votre attention
désolé

Antoine
[right][post=« 380000 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Comme quoi :stuck_out_tongue: je m’appretai a dire qu’il ny avait que le TGA pour ton alpha, en tout cas, pour la 3D → TGA :stuck_out_tongue:

[quote name=‹ Titan › date=’ 25 Jul 2005, 14:22’]Comme quoi :stuck_out_tongue: je m’appretai a dire qu’il ny avait que le TGA pour ton alpha, en tout cas, pour la 3D → TGA :stuck_out_tongue:
[right][post=« 380006 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Et finalement pas « valaaaaaaa » :stuck_out_tongue:
ToShop me fait un truc tout bizarre au niveau de la sauvegarde. Les valeurs d’alpha sont complètement à l’ouest !
Si je crée ma couche alpha et que je la remplis de gris RGB(128,128,128), dans le fichier l’alpha à la valeur 93 (0x5D)… Pareil en TGA…

Y a un truc que j’ai loupé quelque part ?

Edit :
Encore plus drôle.
Entre mon ToShop au boulot et mon ToShop à la maison, la valeur change !
Bon je soupçonne fortement une histoire de gamma ou de profil colorimétrique.
Quelqu’un sait quand on remet ça bien au propre à zéro ?

Antoine

Le detail qui “tue” c’est que le channel “bonus” dans le BMP c’est pas forcement de l’alpha, au contraire du PNG par exemple. Ca peut etre plein d’autre truc que de l’alpha comme un specular ou autre, meme si dans 90% des cas, bien sur c’est de l’alpha.

[quote name=‹ GloP › date=’ 25 Jul 2005, 20:08’]Le detail qui « tue » c’est que le channel « bonus » dans le BMP c’est pas forcement de l’alpha, au contraire du PNG par exemple. Ca peut etre plein d’autre truc que de l’alpha comme un specular ou autre, meme si dans 90% des cas, bien sur c’est de l’alpha.
[right][post=« 380104 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Ah bah ça tombe bien que tu passes dans le coin (je te prépare un café ?), tu vas ptet pouvoir me dire si je m’acharne pour des prunes ou pas.
Bon l’idée, c’est une fenêtre qui contient des contrôles standards de dialogues (bouton, sliders, text field, etc.) voire, soyons fou, un IE ou Gecko embedded :stuck_out_tongue:
Et moi je voudrais que cette fenêtre elle fasse trop du bonheur à l’oeil de l’utilisateur. Pour cela je voudrais lui donner la forme que je veux (genre des lui mettre des coins ronds, lui donner la forme d’un cercle, etc.)
Pour le moment j’utilise les régions.
Problème : y a de l’aliasing. Et l’aliasing c’est mal, n’en mangez pas.
Mais 2000/XP font de l’alpha… Joie. On va dire qu’on pourrait même ajouter une petite ombre sous la fenêtre ! Top classe !
Mais là je m’en sors pas trop. J’ai chopé une méthode sur The Code Project qui fait du per-pixel alpha avec UpdateLayeredWindow.
Seulement, cette méthode se résume à coller une image 32 bits (donc avec un alpha channel) dans un fenêtre et impossible d’avoir quelque chose qui s’affiche en plus.
T’aurais une solution pour moi ?
Pour le moment j’étudie la version XP de Konfabulator, mais j’ai l’impression que ça ne fonctionne qu’avec des images et pas un seul contrôles Windows standard. A suivre…

Antoine

Un ptit up pour dire que j’ai réglé mon problème de channel alpha en passant au PNG. Le PNG c’est bien, mangézan, plein.
La lib est facile d’emploi à partir du moment où on chope l’exemple png_read qui fait le minimum syndical, dont j’avais juste besoin.
Et pour l’histoire du per-pixel alpha, il semble officiel que ce soit impossible tel que je le voudrais. Deux méthodes alternatives :

  • gérer soit même le dessin des fenêtres filles (boutons, select, etc.). On oublie.
  • utiliser une fenêtre sans parenté avec celle qui est en alpha, et faire en sorte qu’elle soit toujours par dessus, et qu’elles se “suivent” pendant les déplacement. C’est super crade, mais je vois rien de mieux pour le moment.

Néanmoins, si vous connaissez des softs comme Konfabulator qui affiche des skins avec du per-pixel alpha, je suis preneur pour voir un peu comment ils font.
Chez Konfabulator, c’est du brutal : pas un seul composant windows natif. Tout est en bitmap “à la main”. Leurs interfaces sont décrites par un fichier XML.

Antoine

[quote name=‹ GloP › date=’ 25 Jul 2005, 20:08’]Le detail qui « tue » c’est que le channel « bonus » dans le BMP c’est pas forcement de l’alpha, au contraire du PNG par exemple. Ca peut etre plein d’autre truc que de l’alpha comme un specular ou autre, meme si dans 90% des cas, bien sur c’est de l’alpha.
[right][post=« 380104 »]<{POST_SNAPBACK}>[/post][/right][/quote]
MEEEEEEP, mauvaise reponse !
La couche suplementaire en 8 bit sur les formats en 32 peut etre interprete n’importe comment en fonction des besoins du moteur : ta couche 8 bit peut ainsi etre utilise indiferement comme une spec, un bump ou une height map, ca n’a pas de lien direct avec le format.

Desole pour la disgression, mais corriger du GloP, ca ne se rate pas :stuck_out_tongue:

Ben heu… c’est exactement ce que je viens de dire! Je dis un truc, tu dis « faux » et tu redit exactement la meme chose. J’ai du rater un episode…

Je le repete donc, PNG, au contraire des autres formats, a un canal dedie pour precisement l’alpha decrit dans les specs et n’a aucune ambiguitee sur l’utilisation de ce canal. Les autres formats peuvent utiliser le canal « bonus » de 32 bits comme bon leur semble, specular, bump, height map, whatever, meme si statistiquement, c’est plus souvent de l’alpha qu’autre chose, mais rien dans les specs du format ne l’oblige. Je me repete texto en fait la… Pour le details sur PNG, voir le RFC ici http://www.faqs.org/rfcs/rfc2083.html section 2.4.

Donc non, t’as rien corrigé dans ce que j’ai dit :stuck_out_tongue: