Переосмыслить CGImageRef, используя PyObjC в Python - PullRequest
1 голос
/ 13 мая 2010

Я делаю что-то немного сложное, чтобы подвести итог в названии, поэтому, пожалуйста, потерпите меня.

Я пишу модуль Python, который предоставляет интерфейс для моей библиотеки C ++, которая предоставляет некоторые специализированные функции для работы с изображениями. Было бы наиболее удобно иметь возможность доступа к буферам изображений как CGImageRefs из Python, чтобы их можно было обрабатывать дальше, используя Quartz (используя PyObjC, который работает хорошо).

Итак, у меня есть функция C ++, которая предоставляет представление CGImageRef из моих собственных буферов изображений, например:

CGImageRef CreateCGImageRefForImageBuffer(shared_ptr<ImageBuffer> buffer);

Я использую Boost :: Python для создания моего моста Python. Как проще всего экспортировать эту функцию, чтобы я мог использовать CGImageRef из Python?

Проблемы: тип CGImageRef не может быть экспортирован напрямую, поскольку он является указателем на неопределенную структуру. Таким образом, я мог бы создать функцию-обертку, которая обернет его в PyCObject или что-то еще, чтобы заставить его отправлять указатель на Python. Но тогда как мне «привести» этот объект к CGImageRef из Python? Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 27 мая 2010

Я думаю, что обертка - это ваша единственная опция, так как это неопределенная структура, а Boost :: Python требует знания интерфейса. Вот отправная точка: http://www.boost.org/doc/libs/1_43_0/libs/python/doc/v2/faq.html#xref

Я бы добавил необходимые функции-члены в оболочку. Я делаю что-то похожее, похоже, пока работает прилично:).

...