microtrigger / lightpack

Automatically exported from code.google.com/p/lightpack
GNU General Public License v3.0
1 stars 0 forks source link

Добавте пожалуйста метод API - getscreencolor #169

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Огромная просьба добавить метод API getscreencolor 
передавая которому номер номер области на 
экране можно было бы получить в ответ её 
средний цвет.

Original issue reported on code.google.com by 5...@mail.ru on 14 Nov 2011 at 3:05

GoogleCodeExporter commented 9 years ago
зачем тебе это ?

Original comment by demmax2...@mail.ru on 14 Nov 2011 at 3:24

GoogleCodeExporter commented 9 years ago
Две цели:
1. Хочу написать очень хитрый плагин в 
котором для вычисления изменения цвета 
необходимо знать цвет области на данный 
момент.
2. По мимо lightpack у меня собран вот такой 
проект http://www.hwp.ru/article.php?ID=2260, однако я 
большинство времени работаю под линукс по 
этому драйвера писал сам, но мой метод 
захвата на много медленнее чем у lightpack, и 
возможностей настройки на много меньше, 
хотелось бы подружить эти проекта через 
данный метод.

Original comment by 5...@mail.ru on 14 Nov 2011 at 3:45

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Ну если ты как бы в теме, то вливайся в 
проект.

сделай свою функцию

QRgb XXXXXXXGrabber::getscreencolor(QList<GrabWidget *> &widgets, int zone)
{
    captureScreen();
    if(zone >= 0 && zone < widgets.size() && widgets.size())
    {
       return getColor(widgets[zone]);
    }
}

Original comment by demmax2...@mail.ru on 14 Nov 2011 at 4:01

GoogleCodeExporter commented 9 years ago
Сейчас попробую разобраться, проблема в 
том, что в QT я полный ноль.
Свои драйвера писал на C#, по сути я просто 
делал скрин области экрана, затем 
масштабировал его до размера 1 на 1 пиксель 
и получал средний цвет.
Под винду примерно так выглядело:
public byte[] GetSrCvet(int chanel, int x, int y, int dlina, int visota)
        {
            Bitmap printscreen = new Bitmap(dlina, visota);
            Graphics graphics = Graphics.FromImage(printscreen as Image);
            graphics.CopyFromScreen(x, y, 0, 0, printscreen.Size);
            graphics.DrawImage(printscreen, 0, 0, 1, 1);
            Color clr = printscreen.GetPixel(0, 0);
            byte[]  bytesToWrite1 = new byte[] { Convert.ToByte(chanel), Convert.ToByte(clr.R.ToString()), Convert.ToByte(clr.G.ToString()), Convert.ToByte(clr.B.ToString()), Convert.ToByte(13) };
            return bytesToWrite1;
        }

Original comment by 5...@mail.ru on 14 Nov 2011 at 4:35

GoogleCodeExporter commented 9 years ago
Если вы хотите сделать поддержку своего 
девайса нашим софтом, то фигня война, для 
этого уже почти всё готово.

Во-первых, слейте самый свежий код из 
репозитория.

Во-вторых, посмотрите на последние коммиты, 
там черным по зеленому написано что и куда 
добавить, чтобы всё заработало 
(http://code.google.com/p/lightpack/source/detail?r=b98259e7494c33e971c1118ec8f6
b003899b76b6# -- кликаем expand all).

И насколько я понял, девайс у вас 
аналогичный Adalight и Ardulight, в части общения 
через UART, поэтому проблем быть не должно. 
Как будет готово кидайтесь в меня кодом на 
brunql@gmail.com, если вам ближе гит можете 
клонировать репозиторий на гитхабе 
(https://github.com/brunql/Lightpack) и сделать pull-request, в 
общем u are welcome!

HINT: Проверьте, возможно у вас Ardulight 
(http://code.google.com/p/ardulight/) совместимый девайс.

Теперь насчет API и команды для получения 
цвета, задача конечно выполнимая, но есть 
нюансы в плане удобства реализации и 
скорости работы, если есть желание можете 
реализовать. Кстати, было бы логично, если 
бы вы раскрыли свой хитрый план.

ЗЫ: Не стоит делать так, как написал demmax2004, 
во-первых это неправильно, возможно он 
просто не до конца разобрался в коде, а 
во-вторых там есть куча нюансов, связанных 
с потоками и текущей архитектурой 
приложения, которые придется учитывать.

Original comment by brunql on 14 Nov 2011 at 8:29

GoogleCodeExporter commented 9 years ago
Кстати, было бы логично, если бы вы раскрыли 
свой хитрый план. - ну он не сильно хитрый, 
плагин просто гоняет бегущие огни по 
периметру монитора, при этом скорость 
вращения зависит от скорости играющей 
музыки, яркость каждого из трех бегущих 
огней от кол-ва низких, средних, высоких. А 
цвет от того что происходит на экране, если 
взять цветовой круг , то лучше всего 
сочетаются, цвета со сдвигом в 120 градусов, 
вот для этого и надо знать цвет области в 
данный момент. Я когда-то делал такую штуку 
на флеше, выглядело  круто.

Original comment by 5...@mail.ru on 20 Nov 2011 at 10:32

GoogleCodeExporter commented 9 years ago
Совмещение и музыки, и видео мне кажется 
это будет сильно влиять на 
производительность компа, и делать это всё 
через API -- излишнее усложнение. 

Могу лишь предложить реализовать всё в 
рамках C++, добавив в проект новый ILedDevice, в 
котором заюзать код из ветки audio, тогда у 
вас будет и актуальная информация о 
состоянии каждой захватываемой области и 
звук, но сразу предупреждаю, что в ветке audio 
код в сильно пре-альфа стадии, работает 
только в Vista/7 и сейчас Николай работает над 
его интеграцией в проект. При таком 
раскладе имхо можно сделать, то что вы 
хотите. 

Original comment by brunql on 9 Dec 2011 at 8:06

GoogleCodeExporter commented 9 years ago
Yo, dawg! I hear you like spoilers, cause...

Original comment by atarity on 10 Jan 2012 at 9:23