• IOS 将图片转换为圆角图


    UIImage+wiRoundedRectImage.h

    复制代码
    #import <UIKit/UIKit.h>
    
    @interface UIImage (wiRoundedRectImage)
    
    + (id)createRoundedRectImage:(UIImage*)image size:(CGSize)size radius:(NSInteger)r;
    
    @end
    复制代码

     

    UIImage+wiRoundedRectImage.m

    复制代码
    #import "UIImage+wiRoundedRectImage.h"
    
    @implementation UIImage (wiRoundedRectImage)
    
    static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,
                                     float ovalHeight)
    {
        float fw, fh;
        
        if (ovalWidth == 0 || ovalHeight == 0)
        {
            CGContextAddRect(context, rect);
            return;
        }
        
        CGContextSaveGState(context);
        CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));
        CGContextScaleCTM(context, ovalWidth, ovalHeight);
        fw = CGRectGetWidth(rect) / ovalWidth;
        fh = CGRectGetHeight(rect) / ovalHeight;
        
        CGContextMoveToPoint(context, fw, fh/2);  // Start at lower right corner
        CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);  // Top right corner
        CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner
        CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner
        CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right
        
        CGContextClosePath(context);
        CGContextRestoreGState(context);
    }
    
    + (id)createRoundedRectImage:(UIImage*)image size:(CGSize)size radius:(NSInteger)r
    {
        // the size of CGContextRef
        int w = size.width;
        int h = size.height;
        
        UIImage *img = image;
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
        CGRect rect = CGRectMake(0, 0, w, h);
        
        CGContextBeginPath(context);
        addRoundedRectToPath(context, rect, r, r);
        CGContextClosePath(context);
        CGContextClip(context);
        CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);
        CGImageRef imageMasked = CGBitmapContextCreateImage(context);
        img = [UIImage imageWithCGImage:imageMasked];
        
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
        CGImageRelease(imageMasked);
        
        return img;
    }
    
    @end
    复制代码

     

    调用方法:

        UIImage * image = [UIImageimageNamed:@"123.jpg"];  // 设置原图

        CGSize size = CGSizeMake(100,100);  // 设置尺寸

        _pImgV.image = [UIImagecreateRoundedRectImage:image size:size radius:10];   // 设置radius

    让明天,不后悔今天的所作所为
  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/-yun/p/4732385.html
Copyright © 2020-2023  润新知