Я пытаюсь написать видео-приложение в PyQt4, и я использовал типы Python для подключения старой библиотеки видеодекодеров старого поколения. Библиотека дает мне 32-битные данные ARGB, и мне нужно превратить это в QImage. Я получил это работает следующим образом:Включение данных типа ctypes в строку python как можно быстрее
# Copy the rgb image data from the pointer into the buffer
memmove(self.rgb_buffer, self.rgb_buffer_ptr, self.buffer_size)
# Copy the buffer to a python string
imgdata = ""
for a in self.rgb_buffer:
imgdata = imgdata + a
# Create a QImage from the string data
img = QImage(imgdata, 720, 288, QImage.Format_ARGB32)
Проблема заключается в том, что ctypes выводит данные как тип «ctypes.c_char_Array_829440
», и мне нужно, чтобы превратить его в строку питона, так что я могу построить QImage. В настоящее время мой механизм копирования занимает почти 300 мс на изображение, поэтому он очень медленный. Часть декодирования и отображения процесса занимает всего около 50 мс.
Может ли кто-нибудь подумать о каких-либо хитрых ярлыках, которые я могу предпринять, чтобы ускорить этот процесс и избежать необходимости копировать буфер дважды, как я сейчас делаю?
Большое спасибо, функция string_at сделала трюк. Мне действительно нужно лучше читать документы. Я проверил их несколько раз и все еще пропустил это! – chrism1