簡體   English   中英

如何從UIImage NSLog像素RGB?

[英]How to NSLog pixel RGB from a UIImage?

我只想:

1)復制像素數據。
2)迭代並修改每個像素(只是告訴我如何將ARGB值NSLog標記為255)
3)從新的像素數據創建UIImage

如果有人可以告訴我如何將像素的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;    
}

這個方向對你有用嗎? 我得到像這樣的像素數據:

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]));

如果您想真正看到圖像,可以使用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等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM