Como nslog pixel rgb de uma uiimage?
Pergunta
Eu só quero:
1) Copie os dados do pixel.
2) Itera e modifique cada pixel (basta me mostrar como nslog os valores de argb como 255)
3) Crie um UIImage a partir dos novos dados do Pixel
Eu posso descobrir os detalhes sangrentos se alguém pode me dizer como nslog os valores RGBA de um pixel como 255. Como modificar o código a seguir para fazer isso? Seja específico, por favor!
-(UIImage*)modifyPixels:(UIImage*)originalImage
{
NSData* pixelData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(originalImage.CGImage));
uint myLength = [pixelData length];
for(int i = 0; i < myLength; i += 4) {
//CHANGE PIXELS HERE
/*
Sidenote: Just show me how to NSLog them
*/
//Example:
//NSLog(@"Alpha 255-Value is: %u", data[i]);
//NSLog(@"Red 255-Value is: %u", data[i+1]);
//NSLog(@"Green 255-Value is: %u", data[i+2]);
//NSLog(@"Blue 255-Value is: %u", data[i+3]);
}
//CREATE NEW UIIMAGE (newImage) HERE
return newImage;
}
Solução
Essa direção funcionou para você? Eu receberia dados de pixel como este:
UInt32 *pixels = CGBitmapContextGetData( ctx );
#define getRed(p) ((p) & 0x000000FF)
#define getGreen(p) ((p) & 0x0000FF00) >> 8
#define getBlue(p) ((p) & 0x00FF0000) >> 16
// display RGB values from the 11th pixel
NSLog(@"Red: %d, Green: %d, Blue: %d", getRed(pixels[10]), getGreen(pixels[10]), getBlue(pixels[10]));
Outras dicas
Se você quiser realmente ver a imagem, pode usar o NSLogger de Florent Pillet:https://github.com/fpillet/nslogger
A idéia é que você inicia o cliente NSLogger na sua área de trabalho e, em seguida, em seu aplicativo, você coloca isso na parte superior:
#import "LoggerClient.h"
E em seu modifyPixels
Método Você pode fazer algo assim:
LogImageData(@"RexOnRoids", // Any identifier to go along with the log
0, // Log level
newImage.size.width, // Image width
newImage.size.height, // Image height
UIImagePNGRepresentation(newImage)); // Image as PNG
Inicie o cliente na sua área de trabalho e execute o aplicativo no seu iPhone e verá imagens reais aparecerem no cliente. Muito útil para depurar problemas de imagem, como virar, girar, cores, alfa, etc.