How to get the pixel color values of custom image inside imageview ios?

前端 未结 4 1260
失恋的感觉
失恋的感觉 2021-01-03 05:59

I know similar question have been asked before.

What I want is to get the RGB pixel value of the Image Inside the Imageview, so it can be any image that

4条回答
  •  醉话见心
    2021-01-03 06:16

    Just use this method, it works for me:

    - (UIColor*) getPixelColorAtLocation:(CGPoint)point 
    {
    
        UIColor* color = nil;
    
        CGImageRef inImage;
    
        inImage = imgZoneWheel.image.CGImage;
    
    
        // Create off screen bitmap context to draw the image into. Format ARGB is 4 bytes for each pixel: Alpa, Red, Green, Blue
        CGContextRef cgctx = [self createARGBBitmapContextFromImage:inImage];
        if (cgctx == NULL) { return nil; /* error */ }
    
        size_t w = CGImageGetWidth(inImage);
        size_t h = CGImageGetHeight(inImage);
        CGRect rect = {{0,0},{w,h}};
    
    
        // Draw the image to the bitmap context. Once we draw, the memory 
        // allocated for the context for rendering will then contain the 
        // raw image data in the specified color space.
        CGContextDrawImage(cgctx, rect, inImage); 
    
        // Now we can get a pointer to the image data associated with the bitmap
        // context.
        unsigned char* data = CGBitmapContextGetData (cgctx);
        if (data != NULL) {
            //offset locates the pixel in the data from x,y. 
            //4 for 4 bytes of data per pixel, w is width of one row of data.
            int offset = 4*((w*round(point.y))+round(point.x));
            alpha =  data[offset]; 
            int red = data[offset+1]; 
            int green = data[offset+2]; 
            int blue = data[offset+3]; 
            color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue:(blue/255.0f) alpha:(alpha/255.0f)];
        }
    
        // When finished, release the context
        //CGContextRelease(cgctx); 
        // Free image data memory for the context
        if (data) { free(data); }
    
        return color;
    }
    

    Just use like this:

    UIColor *color = [self getPixelColorAtLocation:lastPoint];
    

提交回复
热议问题