iOS:如何从二进制数据创建位图并将其作为图像保存在设备上?

时间:2012-03-23 13:24:16

标签: iphone ios bitmap binary-data

我正在尝试使用从服务器收到的二进制数据来创建图像。在我的函数中,我解析数据并获得符号的每个像素的颜色代码(通常为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 个答案:

答案 0 :(得分:2)

  1. 使用Bitmap context(或CGLayer)。
  2. 在绘制像素后,使用CGBitmapContextCreateImage获取CGImageRef。
  3. 使用[UIImage imageFromCGImage:]转换为UIImage。
  4. 然后使用UIImagePNGRepresentation()UIImageJPEGRepresentation()获取NSData对象。
  5. 最后使用[NSData writeToFile:atomically:]保存文件。

答案 1 :(得分:0)

只有像素数据,你才有一个小项目。标准格式可能很复杂,尤其是具有更复杂压缩的jpeg。我想png is probably the simplest