Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2016, 10:02   #1
as.ex
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 22
По умолчанию Конвертация bmp изображения в матрицу и обратно

помогите пожалуйста разобраться. хочу получить изображение в файл для дальнейшей обработки но возникает масса ошибок. код взял отсюда https://sohabr.net/habr/post/195344/.

вот сам код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication36
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap ( "@ c : \\1.bmp " ); // c : \ 1.bmp - адрес изображения
            Color[,] color = new Color[bmp.Width, bmp.Height];
            for (int y = 0; y < bmp.Height; y++)
                for (int x = 0; x < bmp.Width; x++)
                {
                    color[x, y] = bmp.GetPixel(x, y);
                }
            StreamWriter steamWriter = new StreamWriter("@c:\\1.txt");
 for (int y = 0; y < bmp.Height; y++)
 {
      for (int x = 0; x < bmp.Width; x++)
      {
           steamWriter.Write(color[x, y].R.ToString("X2"));
           steamWriter.Write(color[x, y].G.ToString("X2"));
           steamWriter.Write(color[x, y].B.ToString("X2") + " ");
       }
       steamWriter.WriteLine();
  }
  steamWriter.Close();
StreamReader txtFile = new StreamReader ( "@ c : \\ 1.txt " ) ;
 temp = txtFile.ReadLine ();
   width = ( temp.Length + 1) / 7 ;
            while (! txtFile.EndOfStream )
   {
          txtFile.ReadLine ();
          height++;
    }
    height++;
       
            txtFile.DiscardBufferedData ();
            Bitmap bmp2 = new Bitmap ( width , height ) ;
            for ( int i = 0 ; i < height ; i + +);
   {
          temp = txtFile2.ReadLine ();
          string [ ] substring = temp.Split (' ');

           for ( int j = 0 ; j < width ; j + +)
           {
                R = byte.Parse ( substring [ j ] . Substring ( 0 , 2 ) ,
                        System.Globalization.NumberStyles.HexNumber );
                G = byte.Parse ( substring [ j ] . Substring ( 2 , 2 ) , 
                       System.Globalization.NumberStyles.HexNumber );
                 B = byte.Parse ( substring [ j ] . Substring ( 4 , 2 ) , 
                        System.Globalization.NumberStyles.HexNumber );
                 bmp2.SetPixel ( j , i , Color.FromArgb ( R , G , B )) ;
             }
      }

            SaveFileDialog saveImage = new SaveFileDialog ();
    saveImage.Filter = " bmp files (*. bmp ) | * . bmp | All files (*. * )
                       | *  * " ;;
    saveImage.ShowDialog ();
    bmp2.Save (saveImage.FileName);
      
        }
    }
}
Кнопка # для оформления кода
Модератор
Изображения
Тип файла: jpg Screenshot_5.jpg (69.2 Кб, 181 просмотров)

Последний раз редактировалось Аватар; 17.11.2016 в 10:35.
as.ex вне форума Ответить с цитированием
Старый 17.11.2016, 10:05   #2
as.ex
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 22
По умолчанию

при попытке редактировать ошибки возникает еще большее их количество.
as.ex вне форума Ответить с цитированием
Старый 17.11.2016, 10:31   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

собака должна быть до строки, а не в ней:
Код:
@"c:\\1.bmp"
pu4koff вне форума Ответить с цитированием
Старый 17.11.2016, 10:44   #4
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Цитата:
Сообщение от as.ex Посмотреть сообщение
"@ c : \\1.bmp "
Так вроде винда уже поддерживает и другой слеш:

"C:/1.bmp"
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 17.11.2016, 13:07   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
Так вроде винда уже поддерживает и другой слеш:

"C:/1.bmp"
Винде всё равно на слэш. Она и двойной сожрёт. но вот собаку уже не проглотит. Если уж правда решили писать двойной \\, то и собака не нужна перед строкой
pu4koff вне форума Ответить с цитированием
Старый 17.11.2016, 13:19   #6
as.ex
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 22
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Винде всё равно на слэш. Она и двойной сожрёт. но вот собаку уже не проглотит. Если уж правда решили писать двойной \\, то и собака не нужна перед строкой
всё гораздо сложнее.
as.ex вне форума Ответить с цитированием
Старый 17.11.2016, 13:23   #7
as.ex
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 22
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
@"c:\\1.bmp"
я выбрал оптимальный вариант по подсказкам студии. на остальные способы студия выдавала ругань а этот пропустила. главная же проблема в блоке записи в файл. файлика в указанном месте c:\\1.txt я не наблюдаю.

Последний раз редактировалось as.ex; 17.11.2016 в 13:25.
as.ex вне форума Ответить с цитированием
Старый 17.11.2016, 13:30   #8
as.ex
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 22
По умолчанию

хотя вот по вашим подсказкам смарите я исправил и ничего опять.
Изображения
Тип файла: jpg Screenshot_6.jpg (41.7 Кб, 130 просмотров)
as.ex вне форума Ответить с цитированием
Старый 17.11.2016, 13:34   #9
as.ex
Пользователь
 
Регистрация: 29.10.2016
Сообщений: 22
По умолчанию

еще добавлю ... обьясните плиз зачем во второй половине кода
StreamReader txtFile = new StreamReader ( " c : \ 1.txt " ) ;
перегонять файл в изображение? я пытался выкинуть вторую часть ... как ненужную ... мне интересен тока текстовый файл .
as.ex вне форума Ответить с цитированием
Старый 17.11.2016, 13:50   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
хотя вот по вашим подсказкам смарите я исправил и ничего опять
Читайте опять. У вас во втором случае путь без экранирования или другого слеша.

Цитата:
перегонять файл в изображение?
Прочитали бы описание задачи автора, а то код скопипастили и все. Например, чтобы проверить, что работает правильно и картинка получается такая же.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы. Чтение и создание .bmp изображения. Пропадает 1 пиксел при создании изображения. s-mumrik Visual C++ 3 12.04.2013 21:21
конвертация gif в bmp belyjj Общие вопросы Delphi 7 07.11.2012 23:45
КОНВЕРТАЦИЯ TChar в bmp MOMOTOCHEK Помощь студентам 2 21.03.2011 06:51
Как загрузить BMP в массив и обратно в С++ Ilja Общие вопросы C/C++ 8 07.03.2009 23:48
Конвертация ICO в BMP DeDoK Общие вопросы Delphi 5 15.07.2008 23:44