获取当前显示屏幕某一点的颜色
来源:互联网 发布:java读懂项目代码 编辑:程序博客网 时间:2024/05/22 07:57
获取当前显示屏幕某一点的颜色
1、 获取当前屏幕的截图
-(UIImage *)fullScreenshots{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; UIGraphicsBeginImageContext(screenWindow.frame.size);//全屏截图,包括window [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); return viewImage;}
2、 通过图片获取点颜色
- (UIColor*) getPixelColorAtLocation:(CGPoint)point withImage:(UIImage*) image { UIColor* color = nil; CGImageRef inImage = 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; } 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. @try { int offset = 4*((w*round(point.y))+round(point.x)); NSLog(@"offset: %d", offset); int alpha = data[offset]; int red = data[offset+1]; int green = data[offset+2]; int blue = data[offset+3]; NSLog(@"offset: %i colors: RGB A %i %i %i %i",offset,red,green,blue,alpha); color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue:(blue/255.0f) alpha:(alpha/255.0f)]; } @catch (NSException * e) { NSLog(@"%@",[e reason]); } @finally { } } return color;}- (CGContextRef) createARGBBitmapContextFromImage:(CGImageRef) inImage { CGContextRef context = NULL; CGColorSpaceRef colorSpace; void * bitmapData; int bitmapByteCount; int bitmapBytesPerRow; // Get image width, height. We'll use the entire image. size_t pixelsWide = CGImageGetWidth(inImage); size_t pixelsHigh = CGImageGetHeight(inImage); // Declare the number of bytes per row. Each pixel in the bitmap in this // example is represented by 4 bytes; 8 bits each of red, green, blue, and // alpha. bitmapBytesPerRow = (pixelsWide * 4); bitmapByteCount = (bitmapBytesPerRow * pixelsHigh); // Use the generic RGB color space. colorSpace = CGColorSpaceCreateDeviceRGB(); if (colorSpace == NULL) { fprintf(stderr, "Error allocating color spacen"); return NULL; } // Allocate memory for image data. This is the destination in memory // where any drawing to the bitmap context will be rendered. bitmapData = malloc( bitmapByteCount ); if (bitmapData == NULL) { fprintf (stderr, "Memory not allocated!"); CGColorSpaceRelease( colorSpace ); return NULL; } // Create the bitmap context. We want pre-multiplied ARGB, 8-bits // per component. Regardless of what the source image format is // (CMYK, Grayscale, and so on) it will be converted over to the format // specified here by CGBitmapContextCreate. context = CGBitmapContextCreate (bitmapData, pixelsWide, pixelsHigh, 8, // bits per component bitmapBytesPerRow, colorSpace, kCGImageAlphaPremultipliedFirst); if (context == NULL) { free (bitmapData); fprintf (stderr, "Context not created!"); } // Make sure and release colorspace before returning CGColorSpaceRelease( colorSpace ); return context;}
3、 使用方法
- (void)webViewDidFinishLoad:(UIWebView *)webView { if (_backView) { [self performSelector:@selector(changeColor) withObject:nil afterDelay:.5]; }}- (void) changeColor { UIColor* color = [self getPixelColorAtLocation:CGPointMake(4, 22) withImage:[self fullScreenshots]]; if (color && !CGColorEqualToColor(color.CGColor, _backView.backgroundColor.CGColor)) { _backView.backgroundColor = color; }}
在url加载完成后,根据webview的navigationbar颜色确定状态栏背景颜色,保持一致风格
0 0
- 获取当前显示屏幕某一点的颜色
- cocos2dx获取图片某一点的颜色
- 获取屏幕上某一位置像素的颜色
- android获取屏幕某一点的像素值
- iOS 获取当前屏幕显示的viewcontroller
- 如何获取当前屏幕显示的viewcontroller
- 获取当前屏幕显示的viewcontroller
- iOS //获取当前屏幕显示的viewcontroller
- iOS-获取当前屏幕显示的ViewController
- 获取当前屏幕显示的ViewController
- 获取当前屏幕显示的viewcontroller
- 获取当前屏幕显示的viewcontroller
- 获取当前屏幕显示的viewcontroller
- 获取当前屏幕显示的viewcontroller
- 获取当前屏幕显示的viewcontroller
- android 获取当前屏幕显示的Activity
- iOS 获取当前屏幕显示的viewcontroller
- iOS 获取图片某一点的颜色对象(UIColor*)。
- 黑马程序员-----集合
- icare3.0系统学习之旅---序+门诊流程
- Http 请求头 和 相应头
- JQ检测(判断)一个链接(URL)是否有效(服务可用)
- HDU3001 Travelling
- 获取当前显示屏幕某一点的颜色
- typecho管理员帐号密码忘记的修改方法
- LeetCode—51.N-Queens
- USB转串口CH340接线方法
- LoadRunner如何监控Tomcat性能
- javascript中concat()、slice()、substr()和substring()字符串方法
- LayoutInflater的inflate方法详解
- Python/scikit-learn机器学习库(SVM支持向量机)
- 通过gitcheckout到本地然后通过pod添加框架后出现.h文件找不到问题的解决办法