Transparence de Png
Transparence de Png
Salut
Voila je cherche comment trouver la couleur de transparence d'une image png.
voila tout
merci d'avance
A+
Scaraber
Voila je cherche comment trouver la couleur de transparence d'une image png.
voila tout
merci d'avance
A+
Scaraber
- Crystal Noir
- Messages : 892
- Inscription : mar. 27/janv./2004 10:07
Trouver la couleur transparente d'une image qu'on a pas fait c'est galère.
Moi je procède comme suit :
1°) j'ouvre l'image avec mon éditeur
2°) je colore avec une couleur qui n'est pas dans le dessin la partie que je veux transparente
3°) j'utilise TransparentSpriteColor(#Sprite, Couleur) dans pure pour la définir.
on peut également utiliser la pipette dans le logiciel de retouche mais si l'image est de mauvaise qualité, on aura pas des valeurs exactes par ex pour du noir on aura à des endroits 0,0,0 et à d'autres 0,0,1 donc au final pas net.
Moi je procède comme suit :
1°) j'ouvre l'image avec mon éditeur
2°) je colore avec une couleur qui n'est pas dans le dessin la partie que je veux transparente
3°) j'utilise TransparentSpriteColor(#Sprite, Couleur) dans pure pour la définir.
on peut également utiliser la pipette dans le logiciel de retouche mais si l'image est de mauvaise qualité, on aura pas des valeurs exactes par ex pour du noir on aura à des endroits 0,0,0 et à d'autres 0,0,1 donc au final pas net.
@Crystal Noir
Le png conserve à 100% la qualité de l'image, le seul probleme de ce type que tu puisse rencontrer c'estt l'antialiasing
@scaraber
Si ton png est +/- transparent, c'est qu'il contient une couche alpha, et c'est pas une couleur précise qui sera transparente comme avec direct x
c'est pas comme les gif qui ont la 1e couleur de la palette considérée comme transparente...
Dri
Le png conserve à 100% la qualité de l'image, le seul probleme de ce type que tu puisse rencontrer c'estt l'antialiasing
@scaraber
Si ton png est +/- transparent, c'est qu'il contient une couche alpha, et c'est pas une couleur précise qui sera transparente comme avec direct x
c'est pas comme les gif qui ont la 1e couleur de la palette considérée comme transparente...
Dri
d'apres ça :

il existe un segment "tRNS" qui doit definir la transparence non ?Structure d'un fichier PNG
Un fichier PNG est constité d'une signature, permettant de signaler qu'il s'agit d'un fichier PNG, puis d'une série d'éléments appelés chunks (le terme "segments" sera utilisé par la suite). La signature d'un fichier PNG (en notation décimale) est la suivante :
137 80 78 71 13 10 26 10
La même signature en notation hexadécimale est :
89 50 4E 47 0D 0A 1A 0A
Chaque segment (chunk) est composé de 4 parties :
* La taille, un entier non signé de 4 octets, décrivant la taille du segment
* Le type de segment (chunk type) : un code de 4 caractères (4 octets) composés de caractères ASCII alphanumériques (A-Z, a-z, 65 à 90 et 97 à 122) permettant de qualifier la nature du segment
* Les données du segment (chunk data)
* Le CRC (cyclic redundancy check), un code correcteur de 4 octets permettant de vérifier l'intégrité du segment
Les segments peuvent être présents dans n'importe quel ordre si ce n'est qu'ils doivent commencer par le segment d'en-tête (IHDR chunk) et finir par le segment de fin (IEND chunk)
Les principaux segments (appelés critical chunks) sont :
* IHDR Image header
* PLTE Palette
* IDAT Image data
* IEND Image trailer
Les autres segments (appelés anciliary chunks) sont les suivants :
* bKGD Background color
* cHRM Primary chromaticities and white point
* gAMA Image gamma
* hIST Image histogram
* pHYs Physical pixel dimensions
* sBIT Significant bits
* tEXt Textual data
* tIME Image last-modification time
* tRNS Transparency
* zTXt Compressed textual data

Salut
bon deja merci de votre aide.
mes recherche sur google ne mon toujours pas satisfait je ne trouve pas coment faire.
je vais essayer plusieurs chose pour essayer de trouver dans le .png le tRNS
A+
Scaraber
bon deja merci de votre aide.
mes recherche sur google ne mon toujours pas satisfait je ne trouve pas coment faire.
Certainement mais comment le trouver ? et comment recuperer sa valeur ?il existe un segment "tRNS" qui doit definir la transparence non ?
je vais essayer plusieurs chose pour essayer de trouver dans le .png le tRNS
A+
Scaraber
bon jai fait un ptit code mais jarive a trouver que le premier segment pas les autre
je pence que mon bug vien du moment ou je lit les donne ne savant pas leur taille je ne peu pas lire sur la bonne longueur et je decale tt .....
Si quelqun a une idee ..?
++
Scaraber
je pence que mon bug vien du moment ou je lit les donne ne savant pas leur taille je ne peu pas lire sur la bonne longueur et je decale tt .....
Si quelqun a une idee ..?
Code : Tout sélectionner
*memo=AllocateMemory(8)
filename$=OpenFileRequester("Fichier a ouvrir","","Chipset (*.png)|*.png",0)
OpenFile(1,filename$)
For byte=1 To 8
Debug ReadByte(1)
Next
For x=1 To 100
ReadLong(1)
a$=ReadString(1,#PB_Ascii)
Debug a$
If a$="tRNS"
Debug "-----------------------------"
Delay(500)
EndIf
ReadData(1,*memo,8)
ReadLong(1)
Next
CloseFile(1)
Scaraber
Salut
bon nouveau code qui semble marche enfin il trouve les premier segment mais apres je suis perdu ....
je m'aide d'une doc
http://www.libpng.org/pub/png/spec/1.2/ ... tml#C.tRNS
le seul probleme c'est que 3 byte = soit un long sous PB soit 3 octel enfin si tt est pas coherant entre la source et mon code c'est normal....
Si quelqun peu maider a finir ... et a trouver la transparence.
bon allez
A+
bon nouveau code qui semble marche enfin il trouve les premier segment mais apres je suis perdu ....
je m'aide d'une doc
http://www.libpng.org/pub/png/spec/1.2/ ... tml#C.tRNS
le seul probleme c'est que 3 byte = soit un long sous PB soit 3 octel enfin si tt est pas coherant entre la source et mon code c'est normal....
Si quelqun peu maider a finir ... et a trouver la transparence.
bon allez
A+
Code : Tout sélectionner
*memo=AllocateMemory(1024)
filename$=OpenFileRequester("Fichier a ouvrir","","Chipset (*.png)|*.png",0)
OpenFile(1,filename$)
For byte=1 To 8
Debug ReadByte(1)
Next
For x=1 To 100
ReadLong(1)
a$=ReadString(1,#PB_Ascii)
Debug "-/-/-"
Debug a$
Select a$
Case "IHDR"
Debug ReadLong(1)
Debug ReadLong(1)
Debug ReadByte(1)
ColorType=ReadByte(1)
Debug ColorType
Debug ReadByte(1)
Debug ReadByte(1)
Debug ReadByte(1)
Case "sRGB"
Debug ReadByte(1)
Case "gAMA"
Debug ReadLong(1)
Case "cHRM"
Debug ReadLong(1)
Debug ReadLong(1)
Debug ReadLong(1)
Debug ReadLong(1)
Debug ReadLong(1)
Debug ReadLong(1)
Debug ReadLong(1)
Debug ReadLong(1)
Case "PLTE"
Debug ReadByte(1)
Debug ReadByte(1)
Debug ReadByte(1)
Debug ReadByte(1)
Debug ReadByte(1)
Debug ReadByte(1)
Debug ReadByte(1)
Debug ReadByte(1)
EndSelect
ReadData(1,*memo,3)
Next
CloseFile(1)