Pergunta

Estou portando algum código OSX para iOS e preciso acessar os bytes de um CIImage.A versão OSX faz isso com um NSBitmapImageRep, mas no iOS eu preciso fazer alguns obstáculos.

Aqui está o código que estou tentando executar

CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent];
CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef data = CGDataProviderCopyData(provider);

CGRect extent = [image extent];
//png.Load((UInt8*)CFDataGetBytePtr(data), extent.size.width, extent.size.height, true);

CFRelease(data);
//CGDataProviderRelease(provider);

Funciona conforme o esperado, mas depois de um tempo o aplicativo trava.Eu não tenho ideia do porquê.Estou adivinhando o vazamento de memória/memória fora dos limites.Pelo que posso dizer, tudo está sendo liberado corretamente ...Se eu comentar essas linhas, nada trava.Se eu comentar CGDataProviderRelease no aplicativo trava quase imediatamente.

Foi útil?

Solução

Eu acho que você precisa CFRelease(cgImage) - você usou "create" para criá-lo, não?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top