画正方形image

    /** 
     *  剪切图片为正方形 
     * 
     *  @param image   原始图片比如size大小为(400x200)pixels 
     *  @param newSize 正方形的size比如400pixels 
     * 
     *  @return 返回正方形图片(400x400)pixels 
     */  
    - (UIImage *)squareImageFromImage:(UIImage *)image scaledToSize:(CGFloat)newSize {  
        CGAffineTransform scaleTransform;  
        CGPoint origin;  
          
        if (image.size.width > image.size.height) {  
            //image原始高度为200,缩放image的高度为400pixels,所以缩放比率为2  
            CGFloat scaleRatio = newSize / image.size.height;  
            scaleTransform = CGAffineTransformMakeScale(scaleRatio, scaleRatio);  
            //设置绘制原始图片的画笔坐标为CGPoint(-100, 0)pixels  
            origin = CGPointMake(-(image.size.width - image.size.height) / 2.0f, 0);  
        } else {  
            CGFloat scaleRatio = newSize / image.size.width;  
            scaleTransform = CGAffineTransformMakeScale(scaleRatio, scaleRatio);  
              
            origin = CGPointMake(0, -(image.size.height - image.size.width) / 2.0f);  
        }  
          
        CGSize size = CGSizeMake(newSize, newSize);  
        //创建画板为(400x400)pixels  
        if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {  
            UIGraphicsBeginImageContextWithOptions(size, YES, 0);  
        } else {  
            UIGraphicsBeginImageContext(size);  
        }  
          
        CGContextRef context = UIGraphicsGetCurrentContext();  
        //将image原始图片(400x200)pixels缩放为(800x400)pixels  
        CGContextConcatCTM(context, scaleTransform);  
        //origin也会从原始(-100, 0)缩放到(-200, 0)  
        [image drawAtPoint:origin];  
          
        //获取缩放后剪切的image图片  
        image = UIGraphicsGetImageFromCurrentImageContext();  
          
        UIGraphicsEndImageContext();  
          
        return image;  
    }  

 

posted @ 2015-01-28 22:21  曦阳  阅读(221)  评论(0编辑  收藏  举报