美文网首页iOS图像、音频开发iOS移动开发iOS知多少
怎么拿到一张Image的主色调呢?怎样避免imageWithNa

怎么拿到一张Image的主色调呢?怎样避免imageWithNa

作者: Stark_Dylan | 来源:发表于2015-09-11 14:15 被阅读526次

继续给UIImage加扩展吧、

  • 主色调读取

- (UIColor *)averageColor {
    
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    unsigned char rgba[4];
    CGContextRef context = CGBitmapContextCreate(rgba, 1, 1, 8, 4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
    
    CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), self.CGImage);
    CGColorSpaceRelease(colorSpace);
    CGContextRelease(context);
    
    if(rgba[3] == 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];
    }
}
  • UIImage读取

+ (UIImage *)imageWithFileName:(NSString *)name {
    NSString *extension = @"png";
    
    NSArray *components = [name componentsSeparatedByString:@"."];
    if ([components count] >= 2) {
        NSUInteger lastIndex = components.count - 1;
        extension = [components objectAtIndex:lastIndex];
        
        name = [name substringToIndex:(name.length-(extension.length+1))];
    }
    
    // 如果为Retina屏幕且存在对应图片,则返回Retina图片,否则查找普通图片
    if ([UIScreen mainScreen].scale == 2.0) {
        name = [name stringByAppendingString:@"@2x"];
        
        NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:extension];
        if (path != nil) {
            return [UIImage imageWithContentsOfFile:path];
        }
    }
    
    if ([UIScreen mainScreen].scale == 3.0) {
        name = [name stringByAppendingString:@"@3x"];
        
        NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:extension];
        if (path != nil) {
            return [UIImage imageWithContentsOfFile:path];
        }
    }
    
    NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:extension];
    if (path) {
        return [UIImage imageWithContentsOfFile:path];
    }
    
    return nil;
}
  • 水印, 文字以及图片

- (UIImage*)imageWaterMarkWithString:(NSString*)str rect:(CGRect)strRect attribute:(NSDictionary *)attri image:(UIImage *)image imageRect:(CGRect)imgRect alpha:(CGFloat)alpha {
    
    UIGraphicsBeginImageContext(self.size);
    [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height) blendMode:kCGBlendModeNormal alpha:1.0];
    if (image) {
        [image drawInRect:imgRect blendMode:kCGBlendModeNormal alpha:alpha];
    }
    
    if (str) {
        [str drawInRect:strRect withAttributes:attri];
    }
    UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultImage;
}

相关文章

  • 怎么拿到一张Image的主色调呢?怎样避免imageWithNa

    继续给UIImage加扩展吧、 主色调读取 UIImage读取 水印, 文字以及图片

  • 幸福和成功的秘诀是什么?|多元思维007号

    tag:思维模式 逆向思维 image 怎样获得幸福或者成功呢? 查理•芒格给出的方法非常简单––––就是避免不幸...

  • iOS 获取图片的主色调

    根据图片获取图片的主色调 - (UIColor)mostColor:(UIImage)image{if __IPH...

  • 怎样避免或者摆脱抑郁状态

    怎样避免或者摆脱抑郁状态 那么,怎么来避免抑郁或者说在抑郁情况当中时怎么来自救呢? 依据上面我们的结论,也可以根据...

  • 三、Image与Container

    1、image image层的概念 现有的image都是怎么来的呢?其实image就是通过编译运行Dockerfi...

  • 我为数不多的人生阅历 并没有告诉我 该怎么做 怎样避免接踵而来的麻烦 怎样避免语言和行为伤害别人 怎样避免自己的人...

  • iOS 沙盒图片保存读取

    //保存图片 -(void)saveImageDocuments:(UIImage *)image{ //拿到图片...

  • 怎么才能避免出错呢?

    工作中老是出错怎么办?为什么呢?要怎么才能避免。 一,专业知识不够,导致不能及时发现问题。 二,不够细致,观察力不...

  • 怎么才能避免吵架呢?

    经常听到很多人吵架,可吵架又是因为什么呢? 吵架的原因多种多样!可看你怎么处理了! 家里有孩子的家长,都知道,学校...

  • 怎样避免亲子间的冲突呢?

    有人说“陪伴是最长情的告白”,现在我们因为疫情原因, 孩子们都居家上网课,这也是我们难得的亲子陪伴时光,但...

网友评论

    本文标题:怎么拿到一张Image的主色调呢?怎样避免imageWithNa

    本文链接:https://www.haomeiwen.com/subject/auppcttx.html