Stavo sviluppando un'applicazione che modifica l'immagine a colori in un'immagine grigia. Tuttavia, alcuni come l'immagine viene fuori sbagliato. Non so cosa c'è di sbagliato nel codice. forse il parametro che ho inserito è sbagliato, per favore aiuto.Modifica dell'immagine a colori RGB in scala di grigi usando l'obiettivo C
UIImage *c = [UIImage imageNamed:@"downRed.png"];
CGImageRef cRef = CGImageRetain(c.CGImage);
NSData* pixelData = (NSData*) CGDataProviderCopyData(CGImageGetDataProvider(cRef));
size_t w = CGImageGetWidth(cRef);
size_t h = CGImageGetHeight(cRef);
unsigned char* pixelBytes = (unsigned char *)[pixelData bytes];
unsigned char* greyPixelData = (unsigned char*) malloc(w*h);
for (int y = 0; y < h; y++) {
for(int x = 0; x < w; x++){
int iter = 4*(w*y+x);
int red = pixe lBytes[iter];
int green = pixelBytes[iter+1];
int blue = pixelBytes[iter+2];
greyPixelData[w*y+x] = (unsigned char)(red*0.3 + green*0.59+ blue*0.11);
int value = greyPixelData[w*y+x];
}
}
CFDataRef imgData = CFDataCreate(NULL, greyPixelData, w*h);
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData(imgData);
size_t width = CGImageGetWidth(cRef);
size_t height = CGImageGetHeight(cRef);
size_t bitsPerComponent = 8;
size_t bitsPerPixel = 8;
size_t bytesPerRow = CGImageGetWidth(cRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGBitmapInfo info = kCGImageAlphaNone;
CGFloat *decode = NULL;
BOOL shouldInteroplate = NO;
CGColorRenderingIntent intent = kCGRenderingIntentDefault;
CGDataProviderRelease(imgDataProvider);
CGImageRef throughCGImage = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpace, info, imgDataProvider, decode, shouldInteroplate, intent);
UIImage* newImage = [UIImage imageWithCGImage:throughCGImage];
CGImageRelease(throughCGImage);
newImageView.image = newImage;
Ecco un filo simile che potrebbe aiutarti : http://stackoverflow.com/questions/4030430/iphone-convert-color-image-to-2bit-image-black-white –
Qual è l'errore che stai ottenendo? inoltre, utilizzare la selezione '{}' per formattare il codice in futuro. – KevinDTimm
Grazie per il link. Comunque non mi ha aiutato (non ho alcun errore ma l'immagine è strana, sembra stigmatizzata –