带有边框的图片裁剪

Posted iFat的笔记本

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有边框的图片裁剪相关的知识,希望对你有一定的参考价值。

    具体实现思路:
    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

 

以上是关于带有边框的图片裁剪的主要内容,如果未能解决你的问题,请参考以下文章

ListView 背景图片裁剪

css3中使用clip-path将图片裁剪成不规则图形添加边框

1.图像裁剪、加边框、旋转(Python PIL)

使用php从边框中删除透明区域(裁剪透明)

ImageMagick 基于矩形边框颜色裁剪图像

如何在 ImageView 中裁剪 UIImage