Цель c: сохранить значения RGB пикселей изображения в массив - PullRequest
2 голосов
/ 08 апреля 2011

Я пробую несколько экспериментальных изображений на ipad и пытаюсь сохранить colordata каждого пикселя в одном массиве, чтобы повысить производительность при чтении colordata каждого пикселя,

прямо сейчас у меня есть таймер, который вызывает мой DrawRectнасколько это возможно, в моей функции DrawRect у меня есть это:

-(void)drawRect:(CGRect)rect
{
    UIGraphicsBeginImageContext(self.frame.size);
    [currentImage.image drawInRect:CGRectMake(0, 0, 768, 1004)];
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 0.3);  

    r_x = r_x + 1;

    if (r_x == 768) {
        r_x = 1;
        r_y = r_y + 1;
    }
    if (r_y == 1004) {
        NSLog(@"color = %@", mijnArray_kleur);
    }
    CGPoint point2_1 = CGPointMake(r_x, r_y);
    GetColor *mycolor = [GetColor alloc];
    UIColor *st = [mycolor getPixelColorAtLocation:point2_1];
    [mijnArray_kleur addObject:st];
    [mycolor release];
    CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [st CGColor]);

    CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(r_x,r_y,1,1));
}

, а getPixelColorAtLocation - это пользовательский класс, который возвращает значения UIDeviceRGBColorSpace для пикселя

, и это занимает у меня около 4 часов(да, часов: p), чтобы завершить один образ, есть ли что-нибудь быстрее / улучшения?

Спасибо!

Thys

1 Ответ

4 голосов
/ 08 апреля 2011

[Скопировано из комментария для ясности] Не то, чтобы я вообще знал цель C, но мне кажется, что ваша функция перебирает значения 768 * 1004 и, таким образом, рисует столько прямоугольников. Догадываясь о 60 кадрах в секунду, это займет 3 часа 40 минут. Я здесь не прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...