Является ли UIImageJPEGRepresentation () потокобезопасным?

я масштабирую и обрезаю UIImage , и я хочу иметь возможность делать это в блоке, который является потокобезопасным. Я не смог найти в документации, является ли UIImageJPEGRepresentation потокобезопасным.

В следующем коде я обрезаю и масштабирую CGImage , затем создаю UIImage ] и получите UIImageJPEGRepresentation . Конечная цель этого блока - получить NSData * из масштабированной / обрезанной версии.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    CGImageRef imageRef = photo.CGImage;
    CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);
    CGColorSpaceRef colorSpaceInfo = CGImageGetColorSpace(imageRef);

    CGContextRef bitmap;

    if (photo.imageOrientation == UIImageOrientationUp || photo.imageOrientation == UIImageOrientationDown) {
        bitmap = CGBitmapContextCreate(NULL, kFINAL_WIDTH, kFINAL_HEIGHT, CGImageGetBitsPerComponent(imageRef), 0, colorSpaceInfo, bitmapInfo);
    } else {
        bitmap = CGBitmapContextCreate(NULL, kFINAL_HEIGHT, kFINAL_WIDTH, CGImageGetBitsPerComponent(imageRef), 0, colorSpaceInfo, bitmapInfo);
    }

    CGContextSetInterpolationQuality(bitmap, kCGInterpolationHigh);
    CGContextDrawImage(bitmap, drawRect, imageRef);
    CGImageRef ref = CGBitmapContextCreateImage(bitmap);

    NSData *finalData = UIImageJPEGRepresentation([UIImage imageWithCGImage:ref], 1.0);

    CGContextRelease(bitmap);
    CGImageRelease(ref);

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.delegate sendNSDataBack:finalData];
    });
});

Я попытался получить NSData с помощью CGDataProviderRef, но когда я наконец получил NSData, поместил его в UIImage в UIImageView ничего не отображал.

Итак, нижний вопрос. Могу ли я выполнить [UIImage imageWithData:] и UIImageJPEGRepresentation в другом потоке в блоке, использующем GCD?

9
задан rickharrison 27 April 2011 в 17:48
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: