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

Я пытаюсь получить массив байтов, содержащий байты изображения, например:

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, и это `(беззнаковый символ) '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