zoukankan      html  css  js  c++  java
  • 带有边框的图片裁剪

        具体实现思路:
        1.假设边框宽度为BorderW
        2.开启的图片上下文的尺寸就应该是原始图片的宽高分别加上两倍的BorderW,这样开启的目的是为了不让原始图片变形.
        3.在上下文上面添加一个圆形填充路径.位置从0,0点开始,宽高和上下文尺寸一样大.设置颜色为要设置的边框颜色.
        4.继续在上下文上面添加一个圆形路径,这个路径为裁剪路径.
          它的x,y分别从BorderW这个点开始.宽度和高度分别和原始图片的宽高一样大.
          将绘制的这个路径设为裁剪区域.
        5.把原始路径绘制到上下文当中.绘制的位置和是裁剪区域的位置相同,x,y分别从border开始绘制.
        6.从上下文状态当中取出图片.
        7.关闭上下文状态.

    #import "UIImage+image.h"
    
    @implementation UIImage (image)
    
    
    + (UIImage *)imageWithBorderW:(CGFloat)borderW borderColor:(UIColor *)color image:(UIImage *)image{
        
        //1.开启一个和原始图片一样大小的位图上下文.
        CGSize size = CGSizeMake(image.size.width + 2 *borderW, image.size.height + 2 * borderW);
        UIGraphicsBeginImageContextWithOptions(size,NO,0);
        //2.绘制一个大圆,填充
        UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, size.width, size.height)];
        [[UIColor blueColor] set];
        [path fill];
        //3.添加一个裁剪区域.
        path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(borderW, borderW, image.size.width, image.size.height)];
        [path addClip];
        //4.把图片绘制到裁剪区域当中.
        [image drawAtPoint:CGPointMake(borderW, borderW)];
        //5.生成一张新图片.
        UIImage *clipImage = UIGraphicsGetImageFromCurrentImageContext();
        //6.关闭上下文.
        UIGraphicsEndImageContext();
        
        return clipImage;
        
    }
    
    
    @end
  • 相关阅读:
    js 复杂研究
    js 页面 保持状态 的方法
    C# 向上取整数
    js 获取dom 为null 测试
    net core 下 接受文件 测试
    layui 源码解读(部分)
    js 定时器
    js addEventListener
    C# 获得对象的命名空间 ?.
    修改maven的默认jdk版本
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/7016714.html
Copyright © 2011-2022 走看看