2010-06-03 6 views
1

J'essaie de trouver quelques informations sur la suppression d'un fond d'image "automagiquement" si possible dans .NET.Supprimer l'image de fond solide avec c sharp

En fait, je ne pouvais pas trouver beaucoup de données et je ne sais pas si c'est possible ou y at-il des composants API disponibles.

Des idées?

+2

Voulez-vous dire que vous voulez remplacer exactement une couleur dans l'image par la couleur transparente? Avec quel type d'image travaillez-vous (png, gif, jpg, ...)? – Koen

+1

Vous allez devoir poster plus d'informations. Comment définissez-vous le "fond" d'une image? –

+0

Bien sûr! Je ne définis pas le fond. Il est téléchargé par l'utilisateur final de l'application et nous devons l'enlever. Nous attendons un fond de couleur solide et je devrais le changer en transparent (sortie PNG). Ils vont télécharger sur JPG ou PNG. Merci! – Homer1980ar

Répondre

3

Établir une règle, par exemple que le pixel de [0,0] doit être la couleur "transparente" (l'arrière-plan). Charger l'image en tant que Bitmap (appelons-le bmp), puis faire quelque chose comme ceci:

bmp.MakeTransparent(bmp.GetPixel(0, 0)); 
+0

Ça marche! Mais les frontières des images au milieu ne sont pas très claires. (http://picasaweb.google.com/lh/photo/LvDyBlURCQ-IxQmQoFhdmA?feat=directlink). Savez-vous comment puis-je trouver des couleurs qui sont similaires à celle sélectionnée dans le bmp.GetPixel (0,0) afin que je puisse également rendre ces couleurs transparentes? – Homer1980ar

+0

Compte tenu de votre image d'exemple, vous allez trouver qu'il ne suffit pas de rendre les couleurs similaires transparentes. L'arrière-plan semble noir et les figures de l'image contiennent des lignes noires. Vous risquez donc de perdre des parties importantes de l'image (et vous risquez de perdre complètement le texte en haut!). Si vous pouvez vous en sortir, il peut suffire d'imposer une règle selon laquelle la couleur d'arrière-plan doit être distincte. Si vous ne pouvez pas faire cela, vous avez vraiment du travail à faire pour vous, car vous allez entrer dans une analyse d'image avancée. – allonym

0

Homer, pour les formats de fichiers que vous suggérez, il n'y a pas moyen facile de définir ce qu'est le « fond » est. Par exemple, dites que vous avez un texte coloré sur un fond blanc. Je suppose que vous voudriez rendre le blanc transparent? Il n'y a rien dans le format de fichier pour dire "cette couche ou couleur est l'arrière-plan". Il peut y avoir des heuristiques pour essayer de déterminer la couleur d'arrière-plan, mais il n'y aura probablement aucune bibliothèque pour faire quelque chose comme image.MakeBGTransparent().