2009-07-13 19 views
1

Je suis capable de lire un pixel particulier à CGPoint donné, mais j'ai cherché à changer la couleur d'un pixel et il serait très apprécié si quelqu'un peut m'aider avec un extrait de code.Changer la couleur d'un pixel

Mon code est:

unsigned char* data = CGBitmapContextGetData (cgctx);  

if (data != NULL) {  
    offset = 4*((w*round(point.y))+round(point.x));  
    alpha = data[offset];  
    red = data[offset+1];    
    green = data[offset+2];   
    blue = data[offset+3];  
    color = [UIColor colorWithRed:(red/255.0f) 
        green:(green/255.0f) blue:(blue/255.0f) 
        alpha:(alpha/255.0f)];  
} 

Répondre

1

Il est pas clair ce que vous essayez de faire. Si vous voulez changer la couleur dans la CGImageRef originale du pixel alors vous utiliser quelque chose comme:


// Set the color of the pixel to 50% grey + 50% alpha 
data[offset+0] = 128; 
data[offset+1] = 128; 
data[offset+2] = 128; 
data[offset+3] = 128; 

// Create a CGBitmapImageContext 
CGContextRef bitmapContext = CGBitmapContextCreate(data, width, height, CGImageGetBitsPerComponent(), width * 4, CGImageGetColorSpace(), kCGImageAlphPremultipliedFirst); 

// Draw the bitmap context back to your original context 
CGContextDrawImage(bitmapContext, CGMakeRect(...), cgctx); 

Vous devez faire toutes vos modifications aux données * à la fois, puis écrire le tampon bitmap modifié à l'original le contexte.

+0

merci, j'essaie d'implémenter Flood Fill mais je ne suis pas capable de le faire, quand j'essaie de faire correspondre le pixel avec sa valeur de pixel proche, il me donne faux. le scénario est que j'ai une image d'arrière-plan et il y a quelques formes sur elle l'utilisateur peut sélectionner la couleur de la palette et en un seul clic j'essaie d'inonder l'objet. J'ai désespérément besoin d'aide parce que je ne suis pas capable de remplir la couleur. – xavoDev

+0

Cela dépasse le cadre d'une question SO. Vous avez probablement besoin de prendre un livre sur le traitement d'image. Si vous devriez regarder CoreImage pour voir si vous pouvez l'utiliser. Il existe probablement un moyen plus simple de le faire dans CoreImage. – Mark

+0

Mais Mark CoreImage n'est pas pour iPhone ..... vérifiez ce fil. http://discussions.apple.com/thread.jspa?threadID=1552538 – xavoDev

Questions connexes