Работа с потоками FileStream... - C#
Формулировка задачи:
Всем привет!
1. Я записываю в .txt-файл изображение.
2. После чего я читаю этот .txt в строку:
3. Далее создаю массив типа byte и записываю туда все байты из текста:
4. Вот теперь мне нужно вывести изображение в PictureBox:
Таким образом изображение выводится на PictureBox, но после этого он вписывает абракадабру в файл, после чего не является возможным снова отобразить изображение! Подскажите пожалуйста что мне нужно изменить для того чтобы всё было как нужно? Может использовать другой поток?
StreamReader SR = new StreamReader("123.txt"); string Temp = SR.ReadToEnd(); SR.Close();
string[] SplitedTemp = Temp.Split('|'); byte[] MasByte = new byte[SplitedTemp.Length - 1]; for (int i = 0; i < MasByte.Length; i++) MasByte[i] = Convert.ToByte(SplitedTemp[i]);
FileStream FS = new FileStream("123.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); for (int i = 0; i < MasByte.Length; i++) FS.WriteByte(MasByte[i]); pictureBox1.Image = new Bitmap(FS); FS.Close();
Решение задачи: «Работа с потоками FileStream...»
textual
Листинг программы
public static Bitmap GrayScale(Bitmap bmp) { try { // Lock the bitmap's bits. Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height); System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat); // получение адреса первой строки IntPtr ptr = bmpData.Scan0; // объявление байтового массива размером с изображение int bytes = bmpData.Stride * bmp.Height; byte[] rgbValues = new byte[bytes]; // копирование матрицы изображения в массив System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes); //перевод в серое for (int counter = 0; counter < rgbValues.Length; counter += 4) { int x = (int)(0.3 * ((int)rgbValues[counter]) + 0.59 * ((int)rgbValues[counter + 1]) + 0.11 * ((int)rgbValues[counter + 2])); rgbValues[counter] = rgbValues[counter + 1] = rgbValues[counter + 2] = (byte)x; } //копирование матрицы обратнов изображение System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes); // Unlock the bits. bmp.UnlockBits(bmpData); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Stop); } return bmp; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д