3

我只想:

1)复制像素数据。
2)迭代和修改每个像素(只是告诉我如何将 ARGB 值 NSLog 为 255)
3)从新的像素数据创建一个 UIImage

如果有人能告诉我如何将像素的 RGBA 值 NSLog 为 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;    
}
4

2 回答 2

3

这个方向对你有用吗?我会得到这样的像素数据:

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]));
于 2009-08-30T07:48:13.077 回答
1

如果您想实际看到图像,可以使用 Florent Pillet 的 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 上运行该应用程序,您将看到真实的图像出现在客户端中。非常方便调试图像问题,例如翻转、旋转、颜色、alpha 等。

于 2011-01-22T02:55:05.710 回答