iOS截取正方形的图片

//截取正方形的图片 centerBool为YES  表示从中心开始截取
+(UIImage*)getSubImage:(UIImage *)image mCGRect:(CGRect)mCGRect centerBool:(BOOL)centerBool{
 /*如若centerBool为Yes则是由中心点取mCGRect范围的图片*/
 
 float imgWidth = image.size.width;
 float imgHeight = image.size.height;
 float viewWidth = mCGRect.size.width;
 float viewHidth = mCGRect.size.height;
 CGRect rect;
 if(centerBool)
     rect = CGRectMake((imgWidth-viewWidth)/2,(imgHeight-viewHidth)/2,viewWidth,viewHidth);
 else{
     if(viewHidth<viewWidth)
     {
         if(imgWidth<= imgHeight)
         {
             rect=CGRectMake(0, 0,imgWidth, imgWidth*viewHidth/viewWidth);
         }else
         {
             float width = viewWidth*imgHeight/viewHidth;
             float x = (imgWidth  - width)/2;
             if(x>0)
             {
                 rect = CGRectMake(x,0,  width, imgHeight);
             }else
             {
                 rect =  CGRectMake(0,  0,  imgWidth, imgWidth*viewHidth/viewWidth);
             }
         }
     }else
     {
         if(imgWidth <= imgHeight)
         {
             float height = viewHidth*imgWidth/viewWidth;
             if(height< imgHeight)
             {
                 rect =CGRectMake(0,  0, imgWidth, height);
             }else
             {
                 rect = CGRectMake(0,  0,viewWidth*imgHeight/viewHidth, imgHeight);
             }
         }else
         {
             float width = viewWidth*imgHeight/viewHidth;
             if(width< imgWidth)
             {
                 float x =  (imgWidth - width)/2;
                 rect =CGRectMake(x,  0,width, imgHeight);
             }else
             {
                 rect =CGRectMake(0,  0,imgWidth, imgHeight);
             }
         }
     }
 }
 
 CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage,rect);
 CGRect smallBounds =CGRectMake(0, 0,CGImageGetWidth(subImageRef),CGImageGetHeight(subImageRef));
 
 UIGraphicsBeginImageContext(smallBounds.size); CGContextRef context =UIGraphicsGetCurrentContext();CGContextDrawImage(context, smallBounds, subImageRef);
 UIImage *smallImage =[UIImage imageWithCGImage:subImageRef];
 UIGraphicsEndImageContext();
 
 return smallImage;
}

 

转载于:https://my.oschina.net/iceTear/blog/675706

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值