iOS图片裁剪

平时开发的时候经常会遇到需要将图片进行等比缩放的需求,但是本身图片的宽高比与需要等比缩放的宽高比不一致的时候就不方便进行缩放了。

于是我们可以通过对图片进行裁剪来实现修改宽高比:

+ (UIImage *)cutImage:(UIImage*)image
{
    CGSize newSize;
    CGImageRef imageRef = nil;
    
    UIImageOrientation imageOrientation;
    if (image.size.width > image.size.height) {
        imageOrientation = UIImageOrientationRight;
        if ((image.size.width / image.size.height) < (SCREEN_HEIGHT / SCREEN_WIDTH)) {
            newSize.width = image.size.width;
            newSize.height = image.size.width * SCREEN_WIDTH / SCREEN_HEIGHT;
            
            imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, fabs(image.size.height - newSize.height) / 2, newSize.width, newSize.height));
            
        } else {
            newSize.height = image.size.height;
            newSize.width = image.size.height * SCREEN_HEIGHT / SCREEN_WIDTH;
            
            imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(fabs(image.size.width - newSize.width) / 2, 0, newSize.width, newSize.height));
        }
    } else {
        imageOrientation = UIImageOrientationUp;
        if ((image.size.width / image.size.height) < (SCREEN_WIDTH / SCREEN_HEIGHT)) {
            newSize.width = image.size.width;
            newSize.height = image.size.width * SCREEN_HEIGHT / SCREEN_WIDTH;
            
            imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, fabs(image.size.height - newSize.height) / 2, newSize.width, newSize.height));
            
        } else {
            newSize.height = image.size.height;
            newSize.width = image.size.height * SCREEN_WIDTH / SCREEN_HEIGHT;
            
            imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(fabs(image.size.width - newSize.width) / 2, 0, newSize.width, newSize.height));
        }
    }
    return [UIImage imageWithCGImage:imageRef scale:1.0 orientation:imageOrientation];
}

以上代码将图片分为横图和竖图分别进行了处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先贴一个案例,我们做类似的图片展示的时候,都会需要对相应的图片进行裁剪以适应我们现实的大小,不然图片就会被拉伸或者...
    Haer不变阅读 2,501评论 0 2
  • 图片裁剪根据需求自行设置newSize如果是等比例裁剪(宽高比不变的情况下),可将从相册或者相机拿到的图片获取im...
    vision_colion阅读 1,266评论 0 3
  • 最近在改的需求,需要裁剪图片,然后网上各种搜索,终于寻得一个仿微信头像裁剪的demo,改一改基本OK。但是第一次裁...
    无神阅读 6,598评论 29 47
  • 在iOS开发过程中,经常会遇到上传图片的需求,有时获取到图片之后需要裁剪一下,而系统提供的方法只能裁剪出一个正方形...
    程序猿马国玺阅读 5,702评论 0 5
  • 写了一个将矩形图片裁剪为圆角矩形的UIImage分类,可以避免大量的使用masksToBounds从而产生离屏渲染...
    爱上别的吧阅读 2,634评论 5 18