Skocz do zawartości

krs22

Użytkownicy
  • Postów

    6
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez krs22

  1. No tak, fakt teraz pliki wygladaja tak samo :-). Mozna spokojnie isc spac.

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace ConsoleApplication1
    {
        public class Program
        {
            public static void Main(String[] args)
            {
                if (args.Length < 1)
                {
                    Console.WriteLine("Wywołanie programu: Program plik");
                    return;
                }
                String plik = args[0];
                FileInfo file = new FileInfo(plik);
                string newFile, newFileWOext;
                newFile = Path.GetDirectoryName(plik) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(plik) + ".new";
                newFileWOext = Path.GetFileNameWithoutExtension(plik) + ".new";
                try
                {
    
                    TextReader reader = new StreamReader(plik);
                   TextWriter writer = new TextWriter(newFile);
                    string buffer = reader.ReadToEnd();
                    string[] data = buffer.Trim().Split(' ');
                    int[] intarray = data.Select(s => int.Parse(s)).ToArray();
                    foreach (int i in intarray)
                    writer.Write(i.ToString() + ' ');
                    reader.Close();
                    writer.Close();
                    Console.Write(intarray.Length);
                    Console.ReadKey();
                }
                catch (Exception)
                {
                    Console.WriteLine("Wystąpił błąd podczas odczytu z pliku {0}.", plik);
                    return;
                }
            }
        }
    }

     

    Powyzszy kod odczytuje plik podany w argumencie, czyta liczby i zapisuje je do pliku o tej samej nazwie ze zmienionym rozszerzeniem. Moze komus sie przyda. :-)

    Jutro pobawie sie w przypisywanie danych z przeczytanej tablicy do tablicy pixeli. Oby sie udalo :-). Dziekuje za pomoc.

  2. Wczytywanie calego pliku przehodzi, bo gdy zapisyje ten odczytany ciag do innego pliku oba sa takiej samej wielkosci i z ta sama zawartoiscia.

     

    Problemu wysypywania sie przy duzej dlugosci ciagu nie ma gdy zrobie tak:

     

      string str = ciag.ReadToEnd();
                   string[] strarray = str.Split(' ');
                   float[] intarray = new float[strarray.Length];
                   for (int i = 0; i < strarray.Length; i++)
                   {
                       intarray[i] = Convert.ToByte(strarray[i]);
                       Console.Write(i);
                       Console.Write("  :");
                       Console.Write(intarray[i]);
                       tw.Write(intarray[i]);
                       tw.Write(" ");
                   }

    Jednak plik do kotrego zapisuje tW.Write lekko sie rozni od pierwowzoru test.txt ma 534'335 a wyjsciowy 532'840.

  3. Może zacznijmy od tego czy piszesz jakąś pracę zaliczeniową czy też coś dla siebie. Jeśli to drugie, to radzę zmienić format z bliku tekstowego na binarny, bo jeżeli będziesz to konwertował na bitmapę, to nie ma sensu tracić mocy na konwersję każdego znaku.

     

    Na prace zaliczeniowa. Najprostszym rozwiazaniem bylo by chyba zczytywanie znak po znaku i przypisywanie od razu wartosci ale nie wychodzilo mi to i probowałem wczytywac caly pllik zamieniac na tablice i przypisywac wartosci.

     

    Oto kod do ktorego to potrzebuje:

     

     

     

     

    for (i = 0; i < openFileDialog1.FileNames.Length; i++)
                            {
                              
                                progressBar1.Value++;
                                this.Refresh();
                                string newFile;
                               
                                //newFile = openFileDialog1.FileNames[i].ToString();
                                System.Drawing.Bitmap image = new System.Drawing.Bitmap(512, 512);
                                 newFile = Path.GetDirectoryName(openFileDialog1.FileNames[i]) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(openFileDialog1.FileNames[i]) + ".bmp";
                                int m = 0;
                           
                                //BinaryReader br;
                                //br = new BinaryReader(new FileStream(openFileDialog1.FileNames[i],FileMode.Open));
    
                          
                                       for (int x = 0; x < image.Width; ++x)
                                            {
                                              
                                                for (int y = 0; y < image.Height; ++y)
                                                {
                                     
                                                // Tutuaj wczytywanie pixela z txt i przypisywanie wartosci
                                                  
                                                    image.SetPixel(x, y, Color.FromArgb(255,k,k,k));
                                                }
                                        
                                }
                                       image.Save(newFile);
                                       br.Close();
                            }

     

    A oto funkjca zapisujaca

     

    for (i = 0; i < openFileDialog1.FileNames.Length; i++)
                            {
                                double k;
                                progressBar1.Value++;
                                this.Refresh();
                                string newFile;
                                newFile = openFileDialog1.FileNames[i].ToString();
                                newFile = Path.GetDirectoryName(openFileDialog1.FileNames[i]) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(openFileDialog1.FileNames[i]) + ".txt";
                                Bitmap image = new Bitmap(openFileDialog1.FileNames[i].ToString());
                                int m = 0;
                                StreamWriter fs;
                                fs = new StreamWriter(newFile);
                                for (int y = 0; y < image.Height; y++)
                                {
                                    for (int x = 0; x < image.Width; x++)
                                    {
                                        Color col = image.GetPixel(x, y);
                                        byte red_pixel = col.R;
                                        byte green_pixel = col.G;
                                        byte blue_pixel = col.B;
                                        k = (red_pixel*0.299 + green_pixel*0.587 + blue_pixel*0.114);
                                 
                                        fs.Write(k);
                                        fs.Write(" ");
                                    }
                                    fs.WriteLine();
                                }
                                fs.Close();
    
                            }

     

    Dodam, ze bitmapy maja zawsze rozmiar 512*512 wiec o bledy wynikajace z niewlasciwego rozmiaru bitmapy lub tablicy nie nalezy sie martwic.

  4. using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    
    namespace ConsoleApplication1
    {
        public class Program
        {
    
            public static void Main(String[] args)
            {
                if (args.Length < 1)
                {
                    Console.WriteLine("Wywołanie programu: Program plik");
                    return;
                }
    
                String plik = args[0];
                FileInfo file = new FileInfo(plik);
                string newFile, newFileWOext;
                newFile = Path.GetDirectoryName(plik) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(plik) + ".new";
                newFileWOext = Path.GetFileNameWithoutExtension(plik) + ".new";
                try
                {
                    Console.WriteLine("lol, plik");
                   Console.ReadKey();
                   TextReader ciag = new StreamReader(plik);
                   Console.WriteLine("lol2, plik");
                   Console.ReadKey();
                    int[] tablica = ciag.ReadToEnd().Split(' ').Select(i => int.Parse(i)).ToArray();
                    foreach (int i in tablica)
                    {
                        Console.WriteLine(i);
                        
                    }
    
                    Console.ReadKey();
    
                }
                catch (Exception)
                {
                    Console.WriteLine("Wystąpił błąd podczas odczytu z pliku {0}.", plik);
                    return;
                }
            }
        }
    }

     

    Dziala dla malego pliku, gdy probuje wyswietlic ten 512*512 nie przehodzi.

    Dziekuje za podpowiedz z Net3.0.

  5. Oto moj kod. Programik dostaje plik, wyswietla na ekranie co sie dzieje i zapisuje do pliku o zmienionym rozszerzeniu.

     

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    
    
    public class Program
    {
    
        public static void Main(String[] args)
        {
            if (args.Length < 1)
            {
                Console.WriteLine("Wywołanie programu: Program plik");
                return;
            }
       
            String plik = args[0];
            FileInfo file = new FileInfo(plik);
            string newFile, newFileWOext;
            newFile = Path.GetDirectoryName(plik) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(plik) + ".new";
            newFileWOext = Path.GetFileNameWithoutExtension(plik) + ".new";
    
          StreamReader sr;
            StreamWriter fs;
           
            try
            {
               sr = new StreamReader(plik);
                fs = new StreamWriter(newFile);
               
              
            }
            catch (Exception)
            {
                Console.WriteLine("Otwarcie pliku {0} nie powiodło się.", plik);
                return;
                
            }
    
            try
            {
              
                    int m = 0;
                   string linia = sr.ReadToEnd();
                
                    //int[][] tablica;
                  
              int[]tablicaLiczb = Array.ConvertAll<string, int>(linia.Split(' '),new Converter<string, int>(int.Parse));
    
              /*
              List<int[]> lista = new List<int[]>();
    
              while ( ( linia = sr.ReadLine() ) != null )
              {
                  int[] tablicaLiczb = Array.ConvertAll<string, int>( linia.Split( ' ' ), new Converter<string, int>( int.Parse ) );
                  lista.Add( tablicaLiczb );
              }
               tablica = lista.ToArray();
              */
    
    
              for (int i = 0; i < 4;i++)
                    {
                        for (int j = 0; j < 4; j++)
                        {
                         
                                m=m+1;
                                                    
                                Console.Write(m);
                                Console.Write(" :");
                                Console.WriteLine(tablicaLiczb[m]);
                                fs.Write(tablicaLiczb[m]);
                                fs.Write(" ");
    
                                Console.ReadKey();
                        }
                     
                    }
       
                sr.Close();
                fs.Close();
    
            }
            catch (Exception)
            {
                Console.WriteLine("Wystąpił błąd podczas odczytu z pliku {0}.", plik);
                return;
            }
        }
    }

     

    Dziala dla pliku np

    new.txt

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

     

    To jest moja proba aby sprawdzic dzialanie tego parsera. i dziala jednak nie wiedzac czemu czyta plik od drugiej linii. Jednak zmieniajac to w petle [512][512] program zwraca blad. Analizujac gdzie jest blad doszedlem do tego ze chyba ta funkjca convert nie obsluguje takich dlugich ciagow.

     

     

    Generalnie musze to wykorszytac aby z ciagu znakow 512*512 odczytywac z pliku tekstowego wartosci skali szarosci (0-255). i tworzenia z tego bitmapy w skali szarosci.

     

    przykladowy plik

     

    www.files.aristocracy.pl/krs/test.txt

  6. Witam

     

    Potrzebuje odczytac plik tekstowy w ktorym zapisane sa wartosci od 0-255 odzielone spacjami. Dokladnie jest to 262144 znakow.

    Wczytuje je za pomoca FileStream ReadTo End gdyz ciag jest nieprzerywany znakami podzialu.

     

    Potrzebuje stworzyc z tego tablice jednowymiarowa .

     

     string PixelData = sr.ReadToEnd();
    int[] tablica = Array.ConvertAll<string, int>(PixelData.Split(' '), new Converter<string, int>(int.Parse));

     

    Probowalem to zrobic z listami jak w przykladzie wyzej ale nie wychodzi. Gdyby ktos mogl poprawic bylbym bardzo wdzieczny.

×
×
  • Dodaj nową pozycję...