Vous pouvez utiliser Core Graphics. Ajouter QuartzCore cadre à votre projet.
La méthode de base pour le faire est de rendre votre image dans un contexte bitmap:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bmContext = CGBitmapContextCreate(NULL, width, height, 8,bytesPerRow, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(bmContext, (CGRect){.origin.x = 0.0f, .origin.y = 0.0f, .size.width = originalWidth, .size.height = originalHeight}, cgImage);
alors vous pouvez saisir une référence aux pixels sous-jacents:
UInt8* data = (UInt8*)CGBitmapContextGetData(bmContext);
Effectuez ensuite l'opération de pixels:
const size_t bitmapByteCount = bytesPerRow * originalHeight;
for (size_t i = 0; i < bitmapByteCount; i += 4)
{
UInt8 a = data[i];
UInt8 r = data[i + 1];
UInt8 g = data[i + 2];
UInt8 b = data[i + 3];
// Do pixel operation here
data[i] = (UInt8)newAlpha
data[i + 1] = (UInt8)newRed;
data[i + 2] = (UInt8)newGreen;
data[i + 3] = (UInt8)newBlue;
}
Enfin, prenez votre nouvelle image du contexte:
CGImageRef newImage = CGBitmapContextCreateImage(bmContext);
pouvez-vous clarifier plus; coz je n'ai pas travaillé avec ce genre de projet (graphiques), aussi je suis nouveau pour les graphiques de base, j'ai essayé un peu de codage mais malheureusement cela n'a pas fonctionné –
Jetez un oeil à ce code: https: // github. com/Nyx0uf/NYXImagesUtilities – Nyx0uf
thx pour votre soutien .... je suis maintenant capable de changer les pixels .. :) –