【问题标题】:imagewithcgimage always returns bad access memory error in objective-cimagewithcgimage 总是在 Objective-C 中返回错误的访问内存错误
【发布时间】:2018-11-30 05:45:57
【问题描述】:

我正在做的是从位图数据创建 CGImage 并将其转换为 UIImage。

下面有代码

 - (UIImage *)imageWithBitmapBytes:(Byte *)imageBytes width:(size_t)width height:(size_t)height pixelCount:(NSUInteger)pixelCount {
    NSUInteger imageBufferSize = width * height * pixelCount;
    CGDataProviderRef dataProviderRef = CGDataProviderCreateWithData(nil, imageBytes, imageBufferSize, nil);
    NSUInteger bitsPerComponent = 8;
    NSUInteger bitsPerPixel = bitsPerComponent * pixelCount;
    NSUInteger bytesPerRow = width * pixelCount;
    CGImageRef cgImage = CGImageRetain(CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, CGColorSpaceCreateDeviceGray(), kCGImageAlphaLast, dataProviderRef, nil, false, kCGRenderingIntentDefault));
    CGDataProviderRelease(dataProviderRef);
    UIImage *image =[UIImage imageWithCGImage:cgImage];
    CGImageRelease(cgImage);

    return image;
}

我在 ARC 开启和关闭两种情况下测试了这段代码。

我总是在这一行得到 Bad access memory 错误

UIImage *image =[UIImage imageWithCGImage:cgImage];

【问题讨论】:

    标签: objective-c xcode uikit


    【解决方案1】:

    我认为问题是:

    NSUInteger imageBufferSize = width * height * pixelCount;
    

    因为,imageBufferSize 的长度应该是 imageBytes ...

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2018-09-21
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多