iOS: как создать растровое изображение из двоичных данных и сохранить его на устройстве в виде изображения? - PullRequest
1 голос
/ 23 марта 2012

Я пытаюсь создать изображение, используя двоичные данные, полученные с сервера. В своей функции я анализирую данные и получаю цветовой код для каждого пикселя моего символа (обычно 16 x 16).

Пока я получил это далеко:

- (void)saveSymbol:(Byte *)symbolData WithID:(short)symbolID AndOffset:(int)offset AndLength:(int)length {    

int w, width, h, heigth;

width = [self byteToUShort:symbolData withOffset:offset+6];
heigth = [self byteToUShort:symbolData withOffset:offset+8];

NSLog(@"Symbol with ID:%d\nwidth: %d\nheigth:%d", symbolID, width, heigth);

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];    
NSLog(@"%@", docDir);

NSString *pngFilePath = [NSString stringWithFormat:@"%@/symbol%d.png", docDir, symbolID];
NSLog(@"%@", pngFilePath);

int pos = 25;

for (h = 0; h < heigth; h++) {
    for (w = 0; w < width; w++) {
        if ((symbolData[pos] & 0xFF) != 255) {
            NSLog(@"set color to %d at point (%d / %d)", symbolData[pos] & 0xFF, w, h);
        }
        else {
            if (symbolID == 9)
                NSLog(@"set color to 253 at point (%d / %d)", w, h);
            else
                NSLog(@"set color to %d at point (%d / %d)", symbolData[pos] & 0xFF, w, h);
        }
        pos += 2;
    }
}

}

Надеюсь, это ясно дало понять, что я пытаюсь сделать.

Но я действительно не знаю, куда идти отсюда. Как я могу создать растровое изображение из этих данных? Лучше сохранить его в виде растрового изображения или, возможно, в виде файла PNG или JPEG?

Ваша помощь будет высоко ценится

Ответы [ 2 ]

2 голосов
/ 23 марта 2012
  1. Используйте растровый контекст (или CGLayer).
  2. После того как вы нарисовали свои пиксели, используйте CGBitmapContextCreateImage, чтобы получить CGImageRef.
  3. Преобразуйте в UIImage с помощью [UIImage imageFromCGImage:].
  4. Затем используйте UIImagePNGRepresentation() или UIImageJPEGRepresentation(), чтобы получить объект NSData.
  5. Наконец, используйте [NSData writeToFile:atomically:] для сохранения файла.
0 голосов
/ 23 марта 2012

Имея только данные пикселей, у вас впереди маленький проект.Стандартные форматы могут быть сложными, особенно что-то вроде jpeg с более сложным сжатием.Я думаю png, наверное, самый простой .

...