扫码关注官方订阅号
现在有这样一个需求,比如有一张png图片,有透明区域和非透明区域,现在需要在透明区域正下方添加一个UIscrollView控件。如何能获取不规则透明区域最大的矩形区域呢?
欢迎选择我的课程,让我们一起见证您的进步~~
最好是弄个配置文件,对应位置,宽高。
这是我自己在项目中写的一个分类 用来取图片的rgb
你遍历一下image求出alpha 的max rect是可以的 (性能方面无法得知 你自己测试看看吧)
- (UIColor *)HL_colorAtPixel:(CGPoint)point { if (!CGRectContainsPoint(CGRectMake(0.0f, 0.0f, self.size.width, self.size.height), point)) { return nil; } NSInteger pointX = trunc(point.x); NSInteger pointY = trunc(point.y); CGImageRef cgImage = self.CGImage; NSUInteger width = self.size.width; NSUInteger height = self.size.height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); int bytesPerPixel = 4; int bytesPerRow = bytesPerPixel * 1; NSUInteger bitsPerComponent = 8; unsigned char pixelData[4] = { 0, 0, 0, 0 }; CGContextRef context = CGBitmapContextCreate(pixelData, 1, 1, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); CGColorSpaceRelease(colorSpace); CGContextSetBlendMode(context, kCGBlendModeCopy); // Draw the pixel we are interested in onto the bitmap context CGContextTranslateCTM(context, -pointX, pointY-(CGFloat)height); CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, (CGFloat)width, (CGFloat)height), cgImage); CGContextRelease(context); // Convert color values [0..255] to floats [0.0..1.0] CGFloat red = (CGFloat)pixelData[0] / 255.0f; CGFloat green = (CGFloat)pixelData[1] / 255.0f; CGFloat blue = (CGFloat)pixelData[2] / 255.0f; CGFloat alpha = (CGFloat)pixelData[3] / 255.0f; return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; }
让设计师告诉你
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
最好是弄个配置文件,对应位置,宽高。
这是我自己在项目中写的一个分类 用来取图片的rgb
你遍历一下image求出alpha 的max rect是可以的 (性能方面无法得知 你自己测试看看吧)
让设计师告诉你