ctypes and pointer manipulation

I am dealing with image buffers, and I want to be able to access data a few lines into my image for analysis with a c library. I have created my 8-bit pixel buffer in Python using create_string_buffer. Is there a way to get a pointer to a location within that buffer without re-creating a new buffer? My goal is to analyze and change data within that buffer in chunks, without having to do a lot of buffer creation and data copying.

In this case, ultimately, the C library is doing all the manipulation of the buffer, so I don't actually have to change values within the buffer using Python. I just need to give my C function access to data within the buffer.

Answers


create_string_buffer gives you a ctypes object (an array of chars), then byref, and I quote,

Returns a light-weight pointer to obj, which must be an instance of a ctypes type. offset defaults to zero, and must be an integer that will be added to the internal pointer value.

The offset argument has been added in 2.6, so if you're stuck with an older version you will unfortunately need more work.


You can also use ctypes.cast(buf, ctypes.c_void_p)


Need Your Help

Undefined variable as function argument javascript

javascript function error-handling undefined ambiguous

I've looked a fair bit, so pardon me if this has already been answered.