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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2015, 21:42   #1
Veryn4ik1993
Пользователь
 
Регистрация: 12.09.2012
Сообщений: 81
По умолчанию Изменение яркости изображения

Хочу написать приложение, которое меняет яркость. Но получается лишь следующее, проблема в том, что я не могу понять как менять каждый пиксель
Код:
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();
        }
        }


        
    }
Код:
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}};


    }
          
        }
Помогите, пожалуйста, либо наведите на мысль, как это сделать
Veryn4ik1993 вне форума Ответить с цитированием
Старый 01.06.2015, 09:51   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Так в чем проблема то?? Вы же вызываете GetPixel SetPixel ... что не работает?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера изображения ramsesjol БД в Delphi 3 12.06.2013 14:36
изменение насыщенности и яркости цвета изображения D][mon Помощь студентам 0 05.04.2012 00:00
[C#] Изменение разрешения изображения JonMagon Помощь студентам 0 22.08.2011 15:30
DsPack. Настройка яркости изображения. snake-as Мультимедиа в Delphi 0 25.03.2011 08:30
изменение размера изображения voron.kz Общие вопросы Delphi 2 06.09.2010 08:15