繁体   English   中英

ios中uiimageView的字节数组

[英]byte array to uiimageView in ios

我的要求是将本地图像转换为字节数组,然后将字节数组转换回图像

我已经完成了图像到字节数组的转换,但是我尝试将字节数组转换为图像,然后在UIIMageView代码上显示没有错误,但是图像已转换为字节数组,但是字节数组转换了io图像,但图像未显示,请给我任何想法

这是我到目前为止的

   UIImage *image = [UIImage imageNamed: @"shopper-home-copy_03.png"];




   //Output
   NSData *data = UIImagePNGRepresentation(image);

    NSUInteger len = data.length;

    uint8_t *bytes = (uint8_t *)[data bytes];

    NSMutableString *result = [NSMutableString stringWithCapacity:len * 3];


    [result appendString:@"["];

    for (NSUInteger i = 0; i < len; i++)
    {
        if (i)
        {

            [result appendString:@","];

        }

        [result appendFormat:@"%d", bytes[i]];
    }

    [result appendString:@"]"];
   NSMutableData *newdata = [NSMutableData new];
    NSScanner *theScanner = [NSScanner scannerWithString: result];
    while ([theScanner isAtEnd] == NO) {
        int a;
        [theScanner scanInt:&a];
        uint8_t b = a;
        [newdata appendBytes:(const void *)&b length:1];
    }

    UIImage *newImage = [UIImage imageWithData:newdata];
    self->imageView = [[UIImageView alloc] initWithImage:newImage];

    imageView.frame = CGRectMake(0, 25 , 150,150);

    [self.view addSubview:self->imageView];

首先,您应该检查Base64是否适合您。 如果您仍然需要自己的格式,请尝试以下操作

NSMutableData *newData = [NSMutableData new];
NSScanner *theScanner = [NSScanner scannerWithString: result];
theScanner.charactersToBeSkipped = [NSCharacterSet characterSetWithCharactersInString:@"[],"];
while ([theScanner isAtEnd] == NO) {
    int a;
    [theScanner scanInt:&a];
    uint8_t b = a;
    [newData appendBytes:(const void *)&b length:1];
}
UIImage *newImage = [UIImage imageWithData:newData];

从字节数组创建一个NSData对象。 然后用这个

UIImage *image = [UIImage imageWithData:data];

尝试将字符串转换为字节数组。

将可变字符串转换为数组的第一步。

NSArray *strings = [<mutableString> componentsSeparatedByString:@","];

unsigned c = strings.count; // strings is the array instance from the mutable string (separate using ",")
uint8_t *bytes = malloc(sizeof(*bytes) * c);

unsigned i;

for (i = 0; i < c; i++)

{
NSString *str = [strings objectAtIndex:i];

int byte = [str intValue];
bytes[i] = byte;
}

从字节转换为图像如下。

NSData *imageData = [NSData dataWithBytesNoCopy:bytes length:c freeWhenDone:YES];
UIImage *image = [UIImage imageWithData:imageData];

字节数组到NSData的引用

byteArray转换为NSData ,然后转换为UIImage

-(UIImage *)convertToImageFromByteArray:(NSMutableString*)mutableStr{

    NSArray *byteArray = [mutableStr componentsSeparatedByString:@","];

    unsigned c = byteArray.count;
    uint8_t *bytes = malloc(sizeof(*bytes) * c);

    unsigned i;
    for (i = 0; i < c; i++)
    {
        NSString *str = [byteArray objectAtIndex:i];
        int byte = [str intValue];
        bytes[i] = (uint8_t)byte;
    }

    NSData *data = [NSData dataWithBytes:bytes length:c];

    return [UIImage imageWithData:data];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM