TRAITEMENT D'IMAGE

cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007 - 15 août 2005 à 10:17
cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007 - 20 août 2005 à 12:56
salut je cherche le moyen d'ajouter à une image des parties colorées ou transparentes
exemple sur une image 1024X800 je voudrais la transformer en 1024X1024 mais sans étirement ex:1024X800+224 la partie 1024X224 transparente ou colorée
le but c'est de texturer sur de la 3D opengl sans déformer l'image car opengl n'accepte que les images carrées ou résolution du genre 1024X256
ainsi la partie transparente ajoutée à l'image prend la couleur de fond de la fenêtre opengl
ou si coloration de ce rajout mettre la même couleur que le fond de la fenêtre opengl

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 août 2005 à 13:35
Tu as essayé de faire un BitBlt sur un DC contenant un Bitmap aux bonnes dimensions ?

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007
15 août 2005 à 23:13
je ne sais pas de quoi tu parle je suis débutant en programmation
pour le traitement d'image je ne connais que la lib freeimage
pour l'instant avec la lib freeimage je ne sais que diminuer les bitmap ou jpeg
0
cs_keil Messages postés 52 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 25 octobre 2005
16 août 2005 à 09:56
une image n'est rien d'autre qu'une en-tete suivie d'un tableau de pixels.

Pour créer et/ou utiliser une texture, tu utilise le tableau de pixel
et tu fourni en arguments la taille (width et height) de la texture et
le tableau de pixel à une fonction (par exemple glTexture2i(...))

Pour ton problème il suffit de créer un tableau de pixel vide d'une taille plus grande que ton tableau original

tableau de pixel original tpo[]

sizeof(tpo) = 1024x800x4 //4 car tu travaille en RGBA

tableau de pixel nouveau tpn[]

sizeof(tpn) = 1024x1024x4

après tu copie ton premier tableau dans le 2e par une imbrication de 4 boucles:

pour k = 0->1024-1

pour j = 0->800-1

pour i = 0->4-1

tpn[k*j+i] = tpo[k*j+i]



après pour utiliser le reste de la texture, les valeurs du tableau à modifier sont contenues dans la boucle suivante

pour k = 0->1024-1


pour j = 800->1024-1

{

tpn[k*j+0] = ? //R

tpn[k*j+1] = ? //G

tpn[k*j+2] = ? //B

tpn[k*j+3] = ? //A

}



A c'est l'alpha, la force d'opacité

A=0 -> complètement transparent

A = 255 -> complètement opaque



il est possible que je me sois trompé et qu'il faille alors inverser width et height
0
cs_Batman60 Messages postés 71 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 21 octobre 2007
20 août 2005 à 12:56
merci pour le tuyau je n'ai pas pu répondre plus tot pour problème de disque dur HS
0
Rejoignez-nous