"Tronquer le vide" d'un PNG en fonction de son canal alpha

Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007 - 9 mai 2007 à 15:59
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 - 10 mai 2007 à 13:36
Bonjour tout le monde =)

Je viens chercher de l'aide de la part de personnes compétentes pour mon problème qui n'est je pense, pas solvable facilement..

En fait je cherche à enlever la partie "vide" d'un PNG avec un canal alpha, c'est assez dur à expliquer, regardez les images ci-dessous pour comprendre (les carrés blancs et gris représente la transparence) :

Voilà un exemple d'image de départ :

Voilà ce que je veux obtenir (la sélection bleuté c'est juste pour montrer ce que je veux conserver dans l'image, là où il n'y a pas de zones mortes en gros)

Un spécialiste du traitement de l'image en VB 2005 par ici ?

Merci de votre aide =)

1 réponse

NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
10 mai 2007 à 13:36
Bonjour

Je te conseillerais de faire de la sorte :

Dim lImg1 As bitmap 'Image Source
Dim lUp As New point(0,0) lD
Dim lDown As New point(limg1.size)
Dim lImg2 As bitmap 'Image de destination

For X As Integer=0 To limg1.size.width-1
  For Y As Integer=0 To limg1.size.height-1
    If lImg1.GetPixel(x,y).a<>0 Then
      If lup.x>x Then lup.x=x
      If lUp.y>y Then lUp.y=y
      If lDown.x<x Then lDown.x=x
      If lDown.y<y thenown.y=y
      End If
  Next
Next

lImg2=New bitmap(New size (lDown.x-lUp.x+1,lDown.y-lUp.y+1))' nouveau bitmap de la taille réduite

For X As Integer=lUp.x To lDown.x
  For Y As Integer=lUp.y To lDown.y
    limg2.setpixel(x-lup.x,y-lup.y,limg1.getpixel(x,y))
  Next
Next

'Et dans lImg2 tu a ton image redimensionnée., ----
(Coloration syntaxique automatique par Kenji)

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous