Skocz do zawartości

krs22

Użytkownicy
  • Postów

    6
  • Dołączył

  • Ostatnia wizyta

Osiągnięcia krs22

Chicken

Chicken (1/13)

0

Reputacja

  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. 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ę...