Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 1

Изменение яркости изображения

28.05.2015, 21:31. Показов 3065. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу написать приложение, которое меняет яркость. Но получается лишь следующее, проблема в том, что я не могу понять как менять каждый пиксель

C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
 
namespace D
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void buttonLoad_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
                picture1.Load(openFileDialog1.FileName);
        }
 
        private void buttonPer_Click(object sender, EventArgs e)
        {
            var bitmapStart = (Bitmap)picture1.Image;
            var bitmapBase = new Bitmap(picture1.Image.Width, picture1.Image.Height);
            picture2.Image = bitmapBase;
            
            var countPixel = bitmapStart.Width * bitmapStart.Height;
            var index = 0;
            for (var x = 0; x < picture1.Image.Width; x++)
                for (var y = 0; y < picture1.Image.Height; y++)
                {
                    var colorStart = bitmapStart.GetPixel(x, y);
                    byte[] data = new[] {colorStart.R, colorStart.G, colorStart.B};
                    byte[] result = Class1.CalculateBrightness(data);
                    var colorBase = Color.FromArgb(result[0], result[1], result[2]);
                 
                    bitmapBase.SetPixel(x, y, colorBase);
                   
                   progressBar1.Value = Convert.ToInt32(100*((double) index++/countPixel));
                }
            picture2.Update();
        }
        }   
    }
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace D
{
    class Class1
    {
          public static byte[] CalculateBrightness(byte[] rgb)
        {
               var resultBrightness = new double[widthMatrixBrightness];
            for (var x = 0; x < heightMatrixBrightness; x++)
                for (var y = 0; y < widthMatrixBrightness; y++)
                    resultBrightness[x] += matrixBrightness[x][y] * rgb[y];
 
            return new[]
                {
                    Convert.ToByte(Math.Round(resultBrightness[0], 0)),
                    Convert.ToByte(Math.Round(resultBrightness[1], 0) + 128),
                    Convert.ToByte(Math.Round(resultBrightness[2], 0) + 128)
                };
        }
 
        private static readonly byte widthMatrixBrightness = 3;
        private static readonly byte heightMatrixBrightness = 3;
        private static readonly double[][] matrixBrightness = new[] { new[] {.299, .587, 0.114}, 
                                                                      new[] {-.168736, -.331264, .5}, 
                                                                      new[] {.5, -.418688, -.081312}};
 
 
    }
          
        }
Помогите, пожалуйста, либо наведите на мысль, как это сделать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2015, 21:31
Ответы с готовыми решениями:

Изменение яркости изображения
Здравствуйте! Столкнулся с такой проблемой: нужно изменить яркость изображения по формуле V=V+b Нашел формулу для вычисления яркости Y :=...

Изменение интенсивности/яркости цвета в зависимости от переменной.
Есть переменная weight, изменяемая от 1 до 1000. Требуется сделать, чтобы цвет неких объектов визуально изменялся соответственно значению...

Изменение яркости изображения trackBar'ом
Есть pictureBox в который загружается изображение: OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() ==...

1
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10421 / 5151 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
29.05.2015, 09:53
Vera1993,
C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Net;
using System.Windows.Forms;
 
namespace WindowsFormsApplication290
{
    public partial class Form1 : Form
    {
        private Bitmap source;
        private TrackBar tb;
 
        public Form1()
        {
            InitializeComponent();
 
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);
 
            source = (Bitmap)Image.FromStream(new WebClient().OpenRead("http://img-fotki.yandex.ru/get/5114/36014149.81/0_6cbc9_f3de6b6_XL"));
            source.SetResolution(96, 96);
 
            tb = new TrackBar(){Parent = this, Value = 5};
            tb.ValueChanged += delegate { Invalidate(); };
        }
 
        private Bitmap ChangeBrightness(Bitmap img, float k)
        {
            var imageAttributes = new ImageAttributes();
 
            float[][] colorMatrixElements = { 
               new float[] {k,  0,  0,  0, 0},
               new float[] {0,  k,  0,  0, 0},
               new float[] {0,  0,  k,  0, 0},
               new float[] {0,  0,  0,  1f, 0},
               new float[] {0f, 0f, 0f, 0, 1f}};
 
            var colorMatrix = new ColorMatrix(colorMatrixElements);
            imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
 
            var result = new Bitmap(img.Width, img.Height);
            using (var gr = Graphics.FromImage(result))
                gr.DrawImage(img,
                           new Rectangle(0, 0, img.Width, img.Height),
                           0, 0,
                           img.Width,
                           img.Height,
                           GraphicsUnit.Pixel,
                           imageAttributes);
 
            return result;
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
 
            e.Graphics.DrawImage(source, 0, 0);
 
            var brightness = (tb.Value - 5f) / 5f;
            if (brightness <= 0) 
                brightness = 1f / (-brightness + 1);
            else
                brightness = 1 + brightness;
 
            var res = ChangeBrightness(source, brightness);
            e.Graphics.DrawImage(res, source.Width + 3, 0);
            res.Dispose();
        }
    }
}
Изменение яркости изображения
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2015, 09:53
Помогаю со студенческими работами здесь

Изменение яркости/контраста изображения телевизионным алгоритмом
Добрый вечер, друзья! Столкнулся с проблемой реализации данного алгоритма. Изменение с RGB алгоритмом сделал, а к этому не могу перейти,...

Изменение яркости изображения, не проходя циклом по каждому пикселю
Здравствуйте. Не нашёл другого способа изменения яркости изображения, кроме обработки каждого пикселя в цикле. Работает это очень...

Неравномерное квантование яркости изображения
Необходимо написать программу по заданию я нашел в интернете с помощью метода равномерного квантования и это он нормально работает....

Определение уровня яркости пикселя ч/б изображения
Как определить яркость пикселя черно-белого изображения? Находил такой код(ниже), но объект Color представляет цвет ARGB. Возможно ли его...

Построение гистограммы общей яркости изображения
Здравствуйте. Подскажите, как построить гистограмму общей яркости изображения в элементе Chart из объекта Bitmap или двумерного массива...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Микросервис на Python с FastAPI и Docker
ArchitectMsa 23.04.2025
В эпоху облачных вычислений и растущей сложности программных продуктов классическая монолитная архитектура всё чаще уступает место новым подходам. Микросервисная архитектура становится фаворитом. . .
Создаем веб-приложение на Vue.js и Laravel
Reangularity 23.04.2025
Выбор правильного технологического стека определяет успех веб-проекта. Laravel и Vue. js формируют отличную комбинацию для создания современных приложений. Laravel — это PHP-фреймворк с элегантным. . .
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
Система статов в Unity
GameUnited 20.04.2025
Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .
Статические свойства и методы в TypeScript
run.dev 20.04.2025
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер