Как NSLog пикселей RGB из UIImage? - PullRequest
3 голосов
/ 30 августа 2009

Я просто хочу:

1) Скопировать данные пикселя.
2) Итерация и изменение каждого пикселя (просто покажите мне, как NSLog значения ARGB как 255)
3) Создание UIImage из новых данных пикселей

Я могу выяснить мрачные подробности, если кто-то может просто сказать мне, как NSLog значения RGBA пикселя равны 255. Как мне изменить следующий код, чтобы сделать это? Будьте конкретны, пожалуйста!

-(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;    
}

Ответы [ 2 ]

3 голосов
/ 30 августа 2009

Работало ли это направление у вас? Я бы получил данные пикселей вот так:

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]));
1 голос
/ 22 января 2011

Если вы действительно хотите увидеть изображение, вы можете использовать NSLogger Флорента Пиллета: https://github.com/fpillet/NSLogger

Идея состоит в том, что вы запускаете клиент NSLogger на своем рабочем столе, а затем в своем приложении поднимаете его вверх:

#import "LoggerClient.h"

И в вашем modifyPixels методе вы можете сделать что-то вроде этого:

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

Запустите клиент на рабочем столе, а затем запустите приложение на своем iphone, и вы увидите, что реальные изображения появляются в клиенте. ОЧЕНЬ удобно для устранения проблем с изображением, таких как переворачивание, вращение, цвета, альфа и т. Д.

...