imagewithcgimage всегда возвращает ошибку памяти плохого доступа в target-c - PullRequest
0 голосов
/ 30 ноября 2018

Что я делаю, так это создаю 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 ивыключено.

Я всегда получаю сообщение об ошибке неверного доступа к памяти в этой строке

UIImage *image =[UIImage imageWithCGImage:cgImage];

1 Ответ

0 голосов
/ 01 декабря 2018

Я думаю, что проблема:

NSUInteger imageBufferSize = width * height * pixelCount;

, потому что imageBufferSize должна быть длиной imageBytes ...

надеюсь, что это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...