Conversão entre UIImage (PNG) e RGB8

Estou usandohttps: //github.com/PaulSolt/UIImage-Conversio

No entanto, parece ter um problema no canal alfa.Problem reconstituindo UIImage a partir de dados de bytes de pixel RGBA

Simplifiquei o problema e apresento como uma pergunta mais organizad

Faça o download do projeto de Paul, execute-o. Ele exibe uma imagem no centro da tela - tudo até agora está correto.

Mas sua demo não está testando para Alpha.

Então, tento compor minha imagem de botão ...

... em cima

O resultado é

aqui está o código - Acabei de modificar o AppDelegate_iPad.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.
    {
        UIImage *image = [UIImage imageNamed:@"Icon4.png"];
        int width = image.size.width;
        int height = image.size.height;

        // Create a bitmap
        unsigned char *bitmap = [ImageHelper convertUIImageToBitmapRGBA8:image];

        // Create a UIImage using the bitmap
        UIImage *imageCopy = [ImageHelper convertBitmapRGBA8ToUIImage:bitmap withWidth:width withHeight:height];

        // Cleanup
        if(bitmap) {
            free(bitmap);   
            bitmap = NULL;
        }

        // Display the image copy on the GUI
        UIImageView *imageView = [[UIImageView alloc] initWithImage:imageCopy];
        CGPoint center = CGPointMake([UIScreen mainScreen].bounds.size.width / 2.0, 
                                     [UIScreen mainScreen].bounds.size.height / 2.0);
        [imageView setCenter:center];
        [window addSubview:imageView];
        [imageView release];
    }


    if( 1 )
    {
        UIImage *image = [UIImage imageNamed:@"OuterButton_Dull.png"];
        int width = image.size.width;
        int height = image.size.height;

        // Create a bitmap
        unsigned char *bitmap = [ImageHelper convertUIImageToBitmapRGBA8:image];

        // Create a UIImage using the bitmap
        UIImage *imageCopy = [ImageHelper convertBitmapRGBA8ToUIImage:bitmap withWidth:width withHeight:height];

        // Cleanup
        if(bitmap) {
            free(bitmap);   
            bitmap = NULL;
        }

        // Display the image copy on the GUI
        UIImageView *imageView = [[UIImageView alloc] initWithImage:imageCopy]; // <-- X
        imageView.backgroundColor = [UIColor clearColor];
        CGPoint center = CGPointMake([UIScreen mainScreen].bounds.size.width / 2.0, 
                                     [UIScreen mainScreen].bounds.size.height / 2.0);
        [imageView setCenter:center];
        [window addSubview:imageView];
        [imageView release];

    }


    [window makeKeyAndVisible];

    return YES;
}

Se eu mudar a linha marcada ...

// <-- X 

dizer..

... initWithImage:image]; // instead of imageCopy

... é exibido como deveria:

Alguém está tendo uma rachadura nisso? Parece uma biblioteca muito boa de usar, mas não consigo descobrir onde está o problema.

questionAnswers(1)

yourAnswerToTheQuestion