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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2013, 19:52   #1
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию Чтение BMP файла

Подскажите , пожалуйста , как читать из BMP файла и записывать информацию(яркость) в двухмерный массив в C#?Желательно полный текст программы.
Timurkh77 вне форума Ответить с цитированием
Старый 17.02.2013, 01:15   #2
Демон
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
Стрелка

Привет! Вот, примерно так. Реализовано не на двумерном, а на ступенчатом массиве, переделать несложно. Ну и пространства имен добавь

Код:
static class Program
{
	static void Main()
	{
		var bitmap = new Bitmap("твой путь до файла");
		var brightnessArray = GetBrightnessArray(bitmap);
	}
	
	public static float[][] GetBrightnessArray(Bitmap srcImage)
	{
		Debug.Assert(srcImage != null);
		
		var result = new float[srcImage.Height][]
		for (var y = 0; y < srcImage.Height; y++)
		{
			result[y] = new float[srcImage.Width];
			for (var x = 0; x < srcImage.Width; x++)
			{
				var srcPixel = srcImage.GetPixel(x, y);
				result[y][x] = srcPixel.GetBrightness();
			}
		}
	}
}
Демон вне форума Ответить с цитированием
Старый 17.02.2013, 20:54   #3
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Я просил написать на C#.Определение типа var в C# дает ошибку.
Подключаю библиотеку using System.Drawing выдает ошибку.правда сейчас перестала.Подчеркивает GetBrightnessArray(bitmap) ,и если
описывать массив как float result[y],то подчеркивает массив , равно и
new.Ту ли библиотеку я подключаю System.Drawing , и как будет выгляд-еть программа если описать правильно типы.
Timurkh77 вне форума Ответить с цитированием
Старый 19.02.2013, 21:23   #4
Демон
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
Стрелка

Цитата:
Я просил написать на C#.Определение типа var в C# дает ошибку.
Мой код написан именно на C#, var является ключевым словом)
Если ругается на var, значит у вас устаревшая версия студии/framework/языка. В настройках решения (solution) поставьте .net 3.5+, либо объявите переменные явно, указывая их типы. Но если вам сильно влом, вот:
Код:
using System;
using System.Drawing;

static class Program
{
    static void Main()
    {
        Bitmap bitmap = new Bitmap(20,30);//"твой путь до файла");
        float[][] brightnessArray = GetBrightnessArray(bitmap);
    }

    public static float[][] GetBrightnessArray(Bitmap srcImage)
	{
        if (srcImage == null)
            throw new ArgumentNullException("srcImage");
        
        float[][] result = new float[srcImage.Height][];
		for (var y = 0; y < srcImage.Height; y++)
		{
			result[y] = new float[srcImage.Width];
			for (var x = 0; x < srcImage.Width; x++)
			{
				Color srcPixel = srcImage.GetPixel(x, y);
				result[y][x] = srcPixel.GetBrightness();
			}
		}

        return result;
	}
}
Демон вне форума Ответить с цитированием
Старый 20.02.2013, 22:33   #5
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Почему то подчеркивает System.Drawing.И подчеркивает Bitmap -не распознает.И есть ли такая функция GetBrightness().
Timurkh77 вне форума Ответить с цитированием
Старый 20.02.2013, 22:38   #6
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Почему-то подчеркивает тип Bitmap при передаче параметра функции
Timurkh77 вне форума Ответить с цитированием
Старый 21.02.2013, 06:47   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сборки то подключите нужные...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.02.2013, 07:35   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Поясню предыдущий ответ: Откройте меню View- Solution Explorer (или аналогичные русские, погуглите при надобности) в появившемся окне (если не появилось, значит оно уже было) найдите References(ссылки) нажмите правой кнопкой мыши Add reference (добавить/добавить ссылку) и в разделе .NET выберите System.Drawing и нажмите ок.
phomm вне форума Ответить с цитированием
Старый 21.02.2013, 19:45   #9
Timurkh77
Форумчанин
 
Регистрация: 16.02.2013
Сообщений: 149
По умолчанию

Программа заработала.Спасибо.Распечатываю массив , выдаются
дробные числа после запятой для конкретного файла.Числа меньше
единицы.Так и должно быть для яркости изображения?
Timurkh77 вне форума Ответить с цитированием
Старый 21.02.2013, 22:20   #10
Демон
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
Стрелка

Цитата:
Диапазон яркости от 0.0 до 1.0, где 0.0 представляет черное, а 1.0 представляет белое.
Отсюда.
Учитесь искать
Демон вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка bmp файла Alek-de-Mik Помощь студентам 2 04.10.2012 13:39
Чтение BMP-файла "руками" [Cи] MooNDeaR Помощь студентам 22 29.05.2012 22:20
Запись и чтение BMP-изображения БалаШагаЛ Win Api 1 31.12.2011 16:05
Запись и чтение BMP-изображения БалаШагаЛ Win Api 0 31.12.2011 14:31