gpt4 book ai didi

ios - 获取uiview的主色、副色、三级颜色

转载 作者:行者123 更新时间:2023-11-29 00:35:49 25 4
gpt4 key购买 nike

我使用以下代码将 uiview 转换为 uiimage

- (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;
}

然后我使用以下代码从 uiimage 中获取平均颜色。

-(UIColor *)averageColorOfImage:(UIImage*)image{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char rgba[3];
CGContextRef context = CGBitmapContextCreate(rgba, 1, 1, 8, 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), image.CGImage);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
if(rgba[2] > 0) {
CGFloat alpha = ((CGFloat)rgba[3])/255.0;
CGFloat multiplier = alpha/255.0;
return [UIColor colorWithRed:((CGFloat)rgba[0])*multiplier
green:((CGFloat)rgba[1])*multiplier
blue:((CGFloat)rgba[2])*multiplier
alpha:alpha];
}else {
return [UIColor colorWithRed:((CGFloat)rgba[0])/255.0
green:((CGFloat)rgba[1])/255.0
blue:((CGFloat)rgba[2])/255.0
alpha:((CGFloat)rgba[3])/255.0];
}
}

但 uiview 是红色的,但它始终是白色的。

为什么会这样?我怎样才能获得 rgba 颜色代码?还是uiimage的一二三色?

最佳答案

这是您代码中的一个问题,可能还有其他问题 - 这是通过快速阅读您的代码发现的。

在您的代码中声明:

unsigned char rgba[3];

这声明了一个 C 风格(相对于 Cocoa)固定大小的 三个 元素数组;这些元素可以作为 rgba[0]rgba[1]rgba[2] 访问。您的代码继续使用它作为一个 元素数组并使用rgba[4],它存在。 C 风格的数组没有边界检查,因此您的代码会破坏内存。

您需要声明数组有四个元素:

unsigned char rgba[4];

关于ios - 获取uiview的主色、副色、三级颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40647330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com