zoukankan      html  css  js  c++  java
  • 裁剪出环形图片

    1:首先将一张图片裁剪成圆形图片,,

    /**圆形图片裁剪*/
    - (UIImage *)wjf_circleImage 
    {
        //利用self生成一张圆形图片
        // 1.开启图形上下文
        UIGraphicsBeginImageContextWithOptions(self.size,NO,0);
        // 2.描述圆形路径
        UIBezierPath*path = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(0,0,
        self.size.width,self.size.height)];
        // 3.设置裁剪区域
        [pathaddClip];
        // 4.画图
        [selfdrawAtPoint:CGPointZero];
        // 5.取出图片
        UIImage*image =UIGraphicsGetImageFromCurrentImageContext();
        // 6.关闭上下文
        UIGraphicsEndImageContext();
        returnimage;
    }

    2:用CGContextClearRect 的功能 制作环形图片

    - (UIImage*)getClearRectImage:(UIImage*)image{
        UIGraphicsBeginImageContextWithOptions(image.size,NO,0.0f);
        CGContextRefctx =UIGraphicsGetCurrentContext();
        //默认绘制的内容尺寸和图片一样大,从某一点开始绘制
        [imagedrawAtPoint:CGPointZero];
        CGFloatbigRaduis = image.size.width/5;
        CGRectcirleRect =CGRectMake(image.size.width/2-bigRaduis, 
        image.size.height/2-bigRaduis, bigRaduis*2, bigRaduis*2);
        //CGContextAddArc(ctx,image.size.width/2-bigRaduis,image.size.height/2-bigRaduis, 
        bigRaduis, 0.0, 2*M_PI, 0);
        CGContextAddEllipseInRect(ctx,cirleRect);
        CGContextClip(ctx);
        CGContextClearRect(ctx,cirleRect);
        UIImage*newImage =UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        returnnewImage;
    }

    如果你的图片是正方形的话,就大功告成了,但是你的图片是长方形呢,不用怕.

    注:将长方形图片变成正方形图片:

    - (UIImage * ) getSquareImage: (UIImage *) image RangeCGRect: (CGRect) range centerBool: (BOOL) centerBool {
    
        /*如若centerBool为Yes则是由中心点取mCGRect范围的图片*/
    
        floatimgWidth = image.size.width;
    
        floatimgHeight = image.size.height;
    
        floatviewWidth = range.size.width;
    
        floatviewHidth = range.size.height;
    
        CGRectrect;
    
        if (centerBool)
    
        rect = CGRectMake((imgWidth - viewWidth) / 2,
    
        (imgHeight - viewHidth) / 2, viewWidth, viewHidth);
    
        else {
    
            if (viewHidth
    
            {
    
                if (imgWidth <= imgHeight) {
    
                    rect = CGRectMake(0, 0, imgWidth, imgWidth * viewHidth / viewWidth);
    
                } else {
    
                    floatwidth = viewWidth * imgHeight / viewHidth;
    
                    floatx = (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) {
    
                    floatheight = viewHidth * imgWidth / viewWidth;
    
                    if (height < imgHeight) {
    
                        rect = CGRectMake(0, 0, imgWidth, height);
    
                    } else
    
                    {
    
                        rect = CGRectMake(0, 0, viewWidth * imgHeight / viewHidth, imgHeight);
    
                    }
    
                } else
    
                {
    
                    floatwidth = viewWidth * imgHeight / viewHidth;
    
                    if (width < imgWidth)
    
                    {
    
                        floatx = (imgWidth - width) / 2;
    
                        rect = CGRectMake(x, 0, width, imgHeight);
    
                    } else
    
                    {
    
                        rect = CGRectMake(0, 0, imgWidth, imgHeight);
    
                    }
    
                }
    
            }
    
        }
    
        CGImageRefSquareImageRef = CGImageCreateWithImageInRect(image.CGImage, rect);
    
        CGRectSquareImageBounds = CGRectMake(0, 0, CGImageGetWidth(SquareImageRef), 
        CGImageGetHeight(SquareImageRef));
    
        UIGraphicsBeginImageContext(SquareImageBounds.size);
    
        CGContextRefcontext = UIGraphicsGetCurrentContext();
    
        CGContextDrawImage(context, SquareImageBounds, SquareImageRef);
    
        UIImage * SquareImage = [UIImageimageWithCGImage: SquareImageRef];
    
        UIGraphicsEndImageContext();
    
        returnSquareImage;
    
    }
     

    当然这是就用到了UIimage的size的属性了.

    CGSize size = yuanlai.size;
    float imageSize;
    NSLog(@"size==height%f====width%f",size.height,size.width);
    if(size.height>= size.width) {
        imageSize = size.width;
    }else{
        imageSize = size.height;
    }
  • 相关阅读:
    js修改div标签中的内容
    echarts如何显示在页面上
    mybatis提取<where><if>共用代码
    部署LAMP-LAMP平台集成
    PHP安装指南
    部署LAMP-mysql 安装
    apache虚拟主机
    apache默认网站
    HDU 5375 Gray code 格雷码(水题)
    HDU 5371 Hotaru's problem (Manacher,回文串)
  • 原文地址:https://www.cnblogs.com/isItOk/p/5866876.html
Copyright © 2011-2022 走看看