【问题标题】:UIImage data coming back as nullUIImage 数据返回为空
【发布时间】:2013-12-20 15:49:25
【问题描述】:

我正在尝试将 UIImage 转换为 NSData,然后将 NSData 转换为 Base64 字符串。

这是我处理图像的方法:

- (void)processImage:(UIImage*)image{
    dispatch_queue_t myQueue = dispatch_queue_create("My Queue",NULL);
    [self.spinnerOutlet setAlpha:0.0f];
    [self.spinnerOutlet startAnimating];

    dispatch_async(myQueue, ^{
        NSData *myData = nil;
        myData = UIImagePNGRepresentation(image);

        float sysVer = [[[UIDevice currentDevice] systemVersion] floatValue];
        if (sysVer >= 7.00) {
            // Convert image
            myData = [UIImagePNGRepresentation(image) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength];
        }

        NSString *myString = [NSString stringWithUTF8String:[myData bytes]];
        snapShotInBase64 = myString;

        NSLog(@"Snapshot in base64 string: %@", myString);

        dispatch_async(dispatch_get_main_queue(), ^{
            // BACK TO THE UI THREAD
            [self showSuccessAlertView:@"Great" message:@"Sending Image..."];

            isProcessingImage = NO;
            [self sendImagePostRequest];
        });
    });
}

问题是 NSLog 返回 null!

NSLog(@"Snapshot in base64 string: %@", myString);

【问题讨论】:

  • 你做了什么调试?存在什么?你在哪个版本的 iOS 上运行?
  • 为什么你认为保存图片的NSData可以转换成UTF8Encoded字符串呢?该 NSData 可以在数据中的任何位置有一个空字符,从而结束字符串并释放剩余的内存。这是一个非常糟糕的技术。我不确定为什么您需要图像中的 64 位字符串,但您可以查看此链接以了解 64 位 NSData 编码:github.com/l4u/NSData-Base64
  • 找到了类似的解决方案。见下文:D

标签: ios uiimage base64


【解决方案1】:

我最终使用了 Base64 NSData 扩展类。

https://github.com/nicklockwood/Base64

您可以直接使用他的 Base64.h 和 .m 文件,然后您可以调用一种方法将数据转换为 base64。这很神奇。

【讨论】:

    【解决方案2】:

    你能试试这个吗?我想这对你有帮助。

    图片转base64:-

    
    if let updatedImage = originalImaglable.updateImageOrientionUpSide() {
    
            let imageData: NSData? = UIImageJPEGRepresentation(updatedImage, 0.1) as NSData?
    
            let dataImage = imageData?.base64EncodedString(options: .lineLength64Characters)
    
            if let strdata = dataImage {
    
                str_photo = strdata
            }
      }
    

    【讨论】:

      猜你喜欢
      • 2014-02-24
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多