基础应用

图片裁剪

2019-11-30  本文已影响0人  小明讲啥故事
#pragma mark -----图片裁剪------
-(UIImage *)HU_trimImage:(UIImage *)image{
    //imageView的宽高比
    CGFloat imageViewWidthHeightRatio = _widthHeightRatio;
    if (_widthHeightRatio <= 0) {
        imageViewWidthHeightRatio = 1;
      }
    //屏幕分辨率
//    CGFloat imageScale = [[UIScreen mainScreen] scale];
    CGFloat imageScale = 1;
    CGFloat imageWith = image.size.width*imageScale;
    CGFloat imageHeight =image.size.height*imageScale;
    //image的宽高比
    CGFloat imageWidthHeightRatio =imageWith/imageHeight;
    CGImageRef imageRef = nil;
    CGRect rect;

//    NSLog(@"\nimageWith === %f\nimageHeight === %f\nImageView宽高比 == %f\nimageScale == %f",imageWith,imageHeight,imageViewWidthHeightRatio,imageScale);
    if (imageWidthHeightRatio>imageViewWidthHeightRatio) {
        rect = CGRectMake((imageWith-imageHeight*imageViewWidthHeightRatio)/2, 0, imageHeight*imageViewWidthHeightRatio, imageHeight);
    } else if (imageWidthHeightRatio<imageViewWidthHeightRatio) {
        rect = CGRectMake(0, (imageHeight-imageWith/imageViewWidthHeightRatio)/2, imageWith, imageWith/imageViewWidthHeightRatio);
    }else {
        rect = CGRectMake(0, 0, imageWith, imageHeight);
    }

    imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
    UIImage *res = [UIImage imageWithCGImage:imageRef scale:imageScale orientation:UIImageOrientationUp];
    /**
     一定要,千万要release,否则等着内存泄露吧,稍微高清点的图一张图就是几M内存,很快App就挂了
     */
    CGImageRelease(imageRef);

    return res;
}
上一篇下一篇

猜你喜欢

热点阅读