Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9

Требуется библиотека, возвращающая скриншот в виде переменной

06.03.2016, 17:31. Показов 702. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется питоновским скриптом сделать скриншот и сохранить результат в переменную. PIL.Image.Grab не работает под линуксом, поэтому решил скриншот делать средствами С, нашел пример, но так как в С понимаю чуть меньше, чем ничего, не получается изменить его так, чтобы он возвращал изображение в виде переменной. Собрал библиотеку, при вызове её из питона она выдает ошибку. Помогите исправить функции С.
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
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "newfile.h"
 
//------------------------------------------------------------------------------------------------
#define X 0
#define Y 0
#define WIDTH 600
#define HEIGHT 300
#define DISPLAY_WIDTH 1600
#define DISPLAY_HEIGHT 900
//------------------------------------------------------------------------------------------------
extern int errno;
extern int image;
//------------------------------------------------------------------------------------------------
int main()
{
    Display     *display;
    Window      window;
    XEvent      event;
    int         screen;
    XImage      *image;
    GC          graph_ctx;
    XGCValues   *gc_values;
     
    if ((display = XOpenDisplay(getenv("DISPLAY"))) == NULL)
    {
        printf("Can't connect X server: %s\n", strerror(errno));
        exit(1);
    }
     
    image = XGetImage(display, DefaultRootWindow(display), 0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT, AllPlanes, ZPixmap);
    
    XCloseDisplay(display);     
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
//newfile.h
#ifndef NEWFILE_H extern str image
#define NEWFILE_H __declspec(dllexport)
 
#ifdef  __cplusplus
extern "C" {[str] __declspec(dllexport) __stdcall [image]
#endif
    
#ifdef  __cplusplus
}
#endif
#endif  /* NEWFILE_H */
Python
1
2
3
4
5
6
7
/
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from ctypes import *
 
a = CDLL('/home/user/Desktop/python/dll/dll.so')
print (a)
//dll.def
LIBRARY "sampdll"

EXPORTS
main

// ошибка
Traceback (most recent call last):
File "35.py", line 38, in <module>
a = CDLL('/home/user/Desktop/python/dll/dll.so')
File "/usr/lib64/python3.4/ctypes/__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /home/user/Desktop/python/dll/dll.so: undefined symbol: XOpenDisplay
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2016, 17:31
Ответы с готовыми решениями:

Снять скриншот с поверхности элемента в виде картинки
Всем хай! Сходу к делу! Есть поверхность, на которой изображен граф средствами GDI+ (см.картинку) Вопрос: хочется по нажатию кнопки...

Возможно ли использовать имя переменной в виде переменной?
Skazite, est' li vozmoznost ispolzovat imja peremennoi v vvide peremennoi? primer: New = 'FIFO' New&amp;'_Value' = x Spasibo ...

От вас требуется сделать более простую головоломку "Игра в 8", в которой требуется расположить 8 фишек в виде матрицы
От вас требуется решить более простую головоломку &quot;Игра в 8&quot;, в которой требуется расположить 8 фишек в виде: 1 2 3 4 ...

2
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
09.03.2016, 10:21
Цитата Сообщение от netfesko Посмотреть сообщение
Собрал библиотеку
Вы не собрали библиотеку как надо. Это сразу. Хэдер у вас тоже черти-какой. Давайте сначала: вам изначально в каком виде нужно изображение на вход скрипту?
0
0 / 0 / 0
Регистрация: 06.03.2016
Сообщений: 9
11.03.2016, 13:11  [ТС]
HighPredator, я с С сталкиваюсь первый раз в жизни)) мне уже объяснили как решить задачу средствами питона, поэтому вопрос можно считать решенным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2016, 13:11
Помогаю со студенческими работами здесь

Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел
Разработать заданные согласно условия функции и сделать в главной программе по два вызова этих функций с различными параметрами. Для...

Требуется библиотека для работы с изображениями
Требуется библиотека для работы с изображениями(формат не важен, хоть BMP). Кроме SDL, SFML. Простейший вывод изображения на экран и его...

Для работы MySQL требуется библиотека. Как распространять ее с приложением?
Я не знал, как назвать тему, поэтому назвал так :) Я создал проект, подключил туда MySql.Data предварительно скачав и установив MySQL...

Работа с модулями RFM. Библиотека VirtualWire. Требуется описание методов
Можно где - то посмотреть описание методов библиотеки virtual wire ?

Требуется удалить из данной переменной
:cry: Требуется удалить из данной переменной Bag сведения о багаже, общий вес вещей в котором меньше, чем 10 кг. Использовать...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru