zoukankan      html  css  js  c++  java
  • 【代码笔记】iOS-根据size截取屏幕中间矩形区域

    代码:

    RootViewController.m

    复制代码
    #import "RootViewController.h"
    
    @interface RootViewController ()
    
    @end
    
    @implementation RootViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        
        //初始化界面
        [self addView];
        
    }
    #pragma -mark -functions
    //初始化界面
    -(void)addView
    {
        UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 200, 200)];
        imageView.backgroundColor=[UIColor redColor];
        //显示截取的图
        imageView.image=[self cutCenterImage:[UIImage imageNamed:@"1.jpg"] size:CGSizeMake(200, 200)];
        [self.view addSubview:imageView];
    }
    #pragma mark 根据size截取图片中间矩形区域的图片 这里的size是正方形
    -(UIImage *)cutCenterImage:(UIImage *)image size:(CGSize)size{
        CGSize imageSize = image.size;
        CGRect rect;
        //根据图片的大小计算出图片中间矩形区域的位置与大小
        if (imageSize.width > imageSize.height) {
            float leftMargin = (imageSize.width - imageSize.height) * 0.5;
            rect = CGRectMake(leftMargin, 0, imageSize.height, imageSize.height);
        }else{
            float topMargin = (imageSize.height - imageSize.width) * 0.5;
            rect = CGRectMake(0, topMargin, imageSize.width, imageSize.width);
        }
        
        CGImageRef imageRef = image.CGImage;
        //截取中间区域矩形图片
        CGImageRef imageRefRect = CGImageCreateWithImageInRect(imageRef, rect);
        
        UIImage *tmp = [[UIImage alloc] initWithCGImage:imageRefRect];
        CGImageRelease(imageRefRect);
        
        UIGraphicsBeginImageContext(size);
        CGRect rectDraw = CGRectMake(0, 0, size.width, size.height);
        [tmp drawInRect:rectDraw];
        // 从当前context中创建一个改变大小后的图片
        tmp = UIGraphicsGetImageFromCurrentImageContext();
        
        // 使当前的context出堆栈
        UIGraphicsEndImageContext();
        
        return tmp;
    }
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    复制代码

     

     

     
     
  • 相关阅读:
    AJAX跨域JS访问
    dd
    学习java,搭建一个英文名著轻松阅读网站
    超载问题求解!!!
    nginx + uwsgi 部署Django项目
    一种算法问题,求指点!
    js除法余数
    button捕捉回车键
    为SQL表添加全文索引范例
    .Net刷新页面的小结
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/5274621.html
Copyright © 2011-2022 走看看