iOS 相机拍照之后,截取照片的一部分

不多说,上代码

.h文件



#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger, JWCropImageStyle){
    JWCropImageStyleRight               =0,      // 右半部分
    JWCropImageStyleCenter              =1,      // 中间部分
    JWCropImageStyleLeft                =2,      // 左半部分
    JWCropImageStyleRightOneOfThird     =3,      // 右侧三分之一部分
    JWCropImageStyleCenterOneOfThird    =4,      // 中间三分之一部分
    JWCropImageStyleLeftOneOfThird      =5,      // 左侧三分之一部分
    JWCropImageStyleRightQuarter        =6,      // 右侧四分之一部分
    JWCropImageStyleCenterRightQuarter  =7,      // 中间右侧四分之一部分
    JWCropImageStyleCenterLeftQuarter   =8,      // 中间左侧四分之一部分
    JWCropImageStyleLeftQuarter         =9,      // 左侧四分之一部分
    JWIDCardImageStyleCenter              =10,    // id card
};

@interface UIImage (Extension)

//@interface UIImage (Crop)
- (UIImage *)imageByCroppingWithStyle:(JWCropImageStyle)style;

@end

.m文件


#import "UIImage+crop.h"

@implementation UIImage (Extension)

- (UIImage *)imageByCroppingWithStyle:(JWCropImageStyle)style
{
    CGRect rect;
    switch (style) {
        case JWCropImageStyleLeft:
            rect = CGRectMake(0, 0, self.size.width/2, self.size.height);
            break;
        case JWCropImageStyleCenter:
            rect = CGRectMake(0, self.size.height/4, self.size.width, self.size.height/2);
            break;
        case JWCropImageStyleRight:
            rect = CGRectMake(self.size.width/2, 0, self.size.width/2, self.size.height);
            break;
        case JWCropImageStyleLeftOneOfThird:
            rect = CGRectMake(0, 0, self.size.width/3, self.size.height);
            break;
        case JWCropImageStyleCenterOneOfThird:
            rect = CGRectMake(self.size.width/3, 0, self.size.width/3, self.size.height);
            break;
        case JWCropImageStyleRightOneOfThird:
            rect = CGRectMake(self.size.width/3*2, 0, self.size.width/3, self.size.height);
            break;
        case JWCropImageStyleLeftQuarter:
            rect = CGRectMake(0, 0, self.size.width/4, self.size.height);
            break;
        case JWCropImageStyleCenterLeftQuarter:
            rect = CGRectMake(self.size.width/4, 0, self.size.width/4, self.size.height);
            break;
        case JWCropImageStyleCenterRightQuarter:
            rect = CGRectMake(self.size.width/4*2, 0, self.size.width/4, self.size.height);
            break;
        case JWCropImageStyleRightQuarter:
            rect = CGRectMake(self.size.width/4*3, 0, self.size.width/4, self.size.height);
            break;
        case JWIDCardImageStyleCenter:
//            rect = CGRectMake(0, self.size.height/4, self.size.width, self.size.height/2);
            rect = CGRectMake(self.size.width/4+100, 200, self.size.width/2, self.size.height);
            break;
        default:
            break;
    }
    CGImageRef imageRef = self.CGImage;
    CGImageRef imagePartRef = CGImageCreateWithImageInRect(imageRef, rect);
    UIImage *cropImage = [UIImage imageWithCGImage:imagePartRef];
    CGImageRelease(imagePartRef);
    return cropImage;
}

@end

这个是之前在网上找的,忘了是谁写的,如果谁知道,麻烦告诉我一下原作者的链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,971评论 25 709
  • 幼儿的记忆是零零碎碎的。 四岁以前,一家人住在老房子里,老房左边是奶奶家,奶奶家的左边是叔叔家。 后来老房都卖了。...
    黎娅阅读 1,400评论 0 0
  • 知识的输出是需要有储备作基础的, 要是脑袋空空,如何去输出呢? 前段时间因为金砖,快递停了没法买书,感觉无书可看,...
    爱熙世界阅读 4,191评论 4 6
  • 太久不练手抖啊啊~~~ 时间完全不够用 就这样先吧 冬至快乐
    夏天里的飞天喵阅读 1,396评论 6 3

友情链接更多精彩内容