Нарисуйте изображение из буфера в iOS - PullRequest
2 голосов
/ 02 мая 2011

В настоящее время я работаю над проектом iOS, который является своего рода клиентским VNC. Соединение сервер-клиент успешно установлено. Программа получает изображение экрана в формате RAW и сохраняет его в буфере.

Мой вопрос: как я могу нарисовать буфер в UIView, чтобы при обновлении de buffer обновлялся и вид.

Я прочитал Руководство по программированию OpenGL ES для iOS

Полагаю, это решение моей проблемы, но я в замешательстве. Может кто-нибудь дать мне пример о том, как визуализировать буфер в UIView? Или если у кого-то есть лучшее решение?

Ответы [ 3 ]

1 голос
/ 03 мая 2011
RemoteScreenController.m
- (void) setMappedPtr:(unsigned char *)ptr {

    m_mappedPtr = ptr;
    int bitsPerComponent = 8;
    int bitsPerPixel = 32;
    int bytesPerRow = 4 * 1680;
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, m_mappedPtr, 1680*1050*4, NULL);
    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();      
    CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast;
    CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;

    CGImageRef imageRef = CGImageCreate( 1680, 1050, bitsPerComponent, bitsPerPixel, 
                                                                                bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);

    UIImage *myImage = [UIImage imageWithCGImage:imageRef];
    myView = [[UIImageView alloc] initWithImage:myImage];
    [self.view addSubview:myView];

В моем классе менеджера данных у меня есть ссылка на RemoteScreenController.Когда первый буфер получен, он вызывает setMappedPtr, чтобы инициализировать изображение и добавить его в представление.Затем буфер обновляется другим классом.

0 голосов
/ 10 мая 2011

Наконец, я создаю CGDataProviderRef и 'CGImageRef' каждый раз, когда мой буфер обновляется, затем [imageView setImage:[UIImage imageWithCGImage:imageRef]]; я перерисовываю изображение вручную.Я уверен, что есть лучшие решения, я открыт для всех обсуждений.

0 голосов
/ 02 мая 2011

Проверьте CGImageCreate () , который затем можно использовать для создания правильного UIImage ([UIImage imageWithCGImage:cgImage]) из ваших необработанных данных.Затем создайте UIImageView и добавьте его в UIView для отображения.

Для OpenGL CGImage должен быть всем, что вам нужно (как в этом примере).

...