CGImage of UIImage return NULL

后端 未结 5 684
情深已故
情深已故 2021-01-12 05:16

I created a function for splitting an image into multiple images, but when I take take the CGImage of the UIImage, the CGImage returns NULL

NSArray* splitIma         


        
相关标签:
5条回答
  • 2021-01-12 05:36

    Convert CGImage to UIImage with this and cgImage will not be null:

    func convert(cmage:CIImage) -> UIImage
    {       
        let context:CIContext = CIContext.init(options: nil)
        let cgImage:CGImage = context.createCGImage(cmage, from: cmage.extent)!        
        let image:UIImage = UIImage.init(cgImage: cgImage)        
        return image
    }
    
    0 讨论(0)
  • 2021-01-12 05:39

    The CGImage property will return nil if the UIImage was created from another image such as an IOSurface or CIImage. To get around this in this particular case I can create a CGImage from an IOSurface using the c function then convert that to a UIImage.

    UICreateCGImageFromIOSurface(IOSurfaceRef surface);
    
    0 讨论(0)
  • 2021-01-12 05:41

    It happens in some cases when we try to crop image. I found the solution like this try this may be this can help you:-

    NSData *imageData = UIImageJPEGRepresentation(yourImage, 0.9);
    newImage = [UIImage imageWithData:imageData];
    
    0 讨论(0)
  • 2021-01-12 05:44

    I have created UIImage from CGImage.

    CIImage *ciImage = image.CIImage;
    CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef ref = [context createCGImage:ciImage fromRect:ciImage.extent];
    UIImage *newImage = [UIImage imageWithCGImage:ref];
    

    And now newImage.CGImage is not nil

    0 讨论(0)
  • 2021-01-12 05:59

    What you did now is just create pieces with 0.f width, you should use two fors to define the width & height for your pieces. Code sample like this (not tested yet, but it should works):

    for (int height = 0; height < image.size.height; height += piecesSize) {
      for (int width = 0; width < image.size.width; width += piecesSize) {
        CGRect subFrame = CGRectMake(width, height, piecesSize, piecesSize);
    
        CGImageRef newImage = CGImageCreateWithImageInRect(image.CGImage, subFrame);
        UIImage * finalImage = [UIImage imageWithCGImage:newImage];
        CGImageRelease(newImage);
    
        [tempArray addObject:finalImage];
      }
    }
    
    0 讨论(0)
提交回复
热议问题