Трябва да получа масив от байтове от изображението

Опитвам се да получа масив от байтове, съдържащ байтовете на изображение, като това:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
unsigned char *bytesArray = data.bytes;
NSUInteger lengthOfBytesArray = data.length;

След това се опитвам да копирам тези стойности в масив.

    if (data.length>0)
    {
        NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:data.length];
        for (int i = 0; i<data.length; i++) {
            unsigned char byteFromArray = bytesArray[i];
            [array addObject:[NSValue valueWithBytes:&byteFromArray objCType:@encode(unsigned char)]];

        }
    }

Накрая при отстраняване на грешки получих масив от празни обекти. Те имат адрес на паметта, но нямат стойност (тип NSConcreateValue). Също така в областта за отстраняване на грешки проверих byteFromArray и това е `(unsigned char)'P'. Избрах ли грешен начин за получаване на масив от байтове от изображение или кодът ми е грешен?


person user2032083    schedule 06.03.2014    source източник


Отговори (1)


Опитайте да замените това

    for (int i = 0; i<data.length; i++) {
        unsigned char byteFromArray = bytesArray[i];
        [array addObject:[NSValue valueWithBytes:&byteFromArray objCType:@encode(unsigned char)]];
    }

с тази

    for (int i = 0; i<data.length; i++) 
        [array addObject:[NSNumber numberWithUnsignedChar:bytesArray[i]]];

Освен това предлагам да добавите NSLog за показване на data.length само за да видите колко елемента се добавят към масива.

person user3386109    schedule 11.03.2014