Création d'une image à partir d'un fichier de point "TXT"

[Résolu]
Signaler
Messages postés
43
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
5 août 2010
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
Bonjour à tous
Je me présente je m'appel Karim et je suis nouveau en programmation.
Je cherche à me créé une image à partir d'un fichier TXT qui comprend l'ensemble des points de cette image. Quelqu'un saurait il comment faire.

Je vous remercie d'avance.

13 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
un exemple vaut mieux que de longs discourts : http://www.csharpfr.com/code.aspx?ID=35647

Sébastien FERRAND
[MVP Visual C#]
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
65
Est-ce que tu peux donner la structure de ton ficher texte ?

Amicalement, SharpMao
Messages postés
107
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
15 juillet 2009

Tu peux essaye de copier l'essemble de tes points dans une variable


StreamReader Fichier;

// Déclaration lecture



Fichier=File.OpenText("nom.txt"); // Ouverture
du fichier en lecture


point = Fichier.ReadToEnd();
// Lit et place le contenu du fichier dans une
variable "point"


Fichier.Close();

// Ferme le fichier


Puis recopie dans un fichier JPEG par exmple

StreamWriter Fichier2;



Fichier=File.CreateText("nom.jpg"); // Création du
fichier


Fichier2.WriteLine(point);
//Ecrit le contenut de la variable
"point"


Fichier2.Close();
// Ferme le fichier


>> NiCoMpX <<
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Bonjour,
SharpMao a raison, il faut connaitre la structure de ton fichier.
Une fois la structure du fichier connue, il faut convertir les données en Point et en couleur, et les ecrire avec la classe Bitmap et la méthode SetPixel, puis enregistrer cette instance de Bitmap

Par contre, comme on bosse en code Managé, ca peut prendre du temps selon le nombre de points a ecrire...

Mx
MVP C#
Messages postés
43
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
5 août 2010

re Bonjour
Mon fichier TXT se présente de la manière suivante :
Point: 0
X: 369 Y: 329
Point: 1
X: 369 Y: 330
Point: 2
X: 369 Y: 331
Point: 3
X: 369 Y: 332
Point: 4
X: 369 Y: 333
Point: 5
X: 369 Y: 334
Point: 6
X: 369 Y: 335
Point: 7
X: 369 Y: 336

En fait c'est moi qui l'ai crée .
Je cherche à tracé le contour d'une image à partir d'une image de caméra. Celle ci me permet de detecter le contour de mon image et me retourne un objet qui contient l'ensemble des points de mon contour.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Est-ce que tu as vraiment besoin de "Point: 0", et de X: Y: ?
Je pense que ce serait plus simple a utiliser sans

Mx
MVP C#
Messages postés
43
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
5 août 2010

Ca m'aidait dans un premier temps pour voir à peut pret si cela coincide avec mon image. Mais je peut le retirer
Messages postés
107
Date d'inscription
lundi 16 janvier 2006
Statut
Membre
Dernière intervention
15 juillet 2009

Je pense qu'il faudrais enlever tout les caratères superflux, genre X, Y, POINT,....

Et ne laisser que les coordonnées d'un point par ligne.

>> NiCoMpX <<
Messages postés
43
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
5 août 2010

D'accord et ensuite comment puis je crée mon image ?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
tu récupères l'ensembles des points dans un tableau...

point[] mesPoints;

et tu construis un GraphicsPath de cette manière :

GaphicsPath path = new GraphicsPath();
path.AddLines(mesPoints);

il ne te reste plus qu'à dessiner ce "path"

graphics.DrawPath( SystemPens.Text, path);

Sébastien FERRAND
[MVP Visual C#]
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Voici un exemple rapide avec un fichier points.txt qui contient 3 points:
10;10
50;20
30;30


<HR>

Point[] pointList =
new
Point[3];

public Form1()
{
InitializeComponent();
InitPoints();
DrawPoints();
}



private
void InitPoints()
{

StreamReader reader =
new
StreamReader(
"points.txt");

string str;

int i = 0;

while ((str = reader.ReadLine()) !=
null)
{

string[] temp = str.Split(
';');

try
{

Point p =
new
Point(
int.Parse(temp[0]),
int.Parse(temp[1]));
pointList[i] = p;
}

catch (
Exception e)
{

MessageBox.Show(e.ToString());
}
i++;
}
reader.Close();

}


private
void DrawPoints()
{

Bitmap bmp =
new
Bitmap(100, 100);

GraphicsPath gp =
new
GraphicsPath();
gp.AddLines(
this.pointList);

Graphics g =
Graphics.FromImage(bmp);
g.DrawPath(
new
Pen(
Color.White), gp);
bmp.Save(
"test.bmp");
g.Dispose();
bmp.Dispose();

}


<HR>



Mx
MVP C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Je connaissais pas le PointConverter



Mx
MVP C#
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
héhé... TypeConverter et fils ;)

Sébastien FERRAND
[MVP Visual C#]