Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIImage数据返回为空_Ios_Uiimage_Base64 - Fatal编程技术网

Ios UIImage数据返回为空

Ios UIImage数据返回为空,ios,uiimage,base64,Ios,Uiimage,Base64,我正在尝试将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];

我正在尝试将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返回空值

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

我最终使用了Base64 NSData扩展类


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

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

将图像复制到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
        }
  }

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