zoukankan      html  css  js  c++  java
  • iOS将image转90,180,270度的方法

    http://blog.sina.com.cn/s/blog_6602ffbc0101ckx3.html

    这里要分享的是将image旋转,而不是将imageView旋转,原理就是使用quartz2D来画图片,然后使用ctm变幻来实现旋转。

    注:quartz2D的绘图左边和oc里面的绘图左边不一样,导致绘画出的图片是反转的。所以一上来得使它转正再进行进一步的旋转等
     

    + (UIImage *)image:(UIImage *)image rotation:(UIImageOrientation)orientation

    {

        long double rotate = 0.0;

        CGRect rect;

        float translateX = 0;

        float translateY = 0;

        float scaleX = 1.0;

        float scaleY = 1.0;

        

        switch (orientation) {

            case UIImageOrientationLeft:

                rotate = M_PI_2;

                rect = CGRectMake(0, 0, image.size.height, image.size.width);

                translateX = 0;

                translateY = -rect.size.width;

                scaleY = rect.size.width/rect.size.height;

                scaleX = rect.size.height/rect.size.width;

                break;

            case UIImageOrientationRight:

                rotate = 3 * M_PI_2;

                rect = CGRectMake(0, 0, image.size.height, image.size.width);

                translateX = -rect.size.height;

                translateY = 0;

                scaleY = rect.size.width/rect.size.height;

                scaleX = rect.size.height/rect.size.width;

                break;

            case UIImageOrientationDown:

                rotate = M_PI;

                rect = CGRectMake(0, 0, image.size.width, image.size.height);

                translateX = -rect.size.width;

                translateY = -rect.size.height;

                break;

            default:

                rotate = 0.0;

                rect = CGRectMake(0, 0, image.size.width, image.size.height);

                translateX = 0;

                translateY = 0;

                break;

        }

        

        UIGraphicsBeginImageContext(rect.size);

        CGContextRef context = UIGraphicsGetCurrentContext();

        //做CTM变换

        CGContextTranslateCTM(context, 0.0, rect.size.height);

        CGContextScaleCTM(context, 1.0, -1.0);

        CGContextRotateCTM(context, rotate);

        CGContextTranslateCTM(context, translateX, translateY);

        

        CGContextScaleCTM(context, scaleX, scaleY);

        //绘制图片

        CGContextDrawImage(context, CGRectMake(0, 0, rect.size.width, rect.size.height), image.CGImage);

        

        UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();

        

        return newPic;

    }

  • 相关阅读:
    vue 组件的简单使用01
    vue 绑定 class 和 内联样式(style)
    input select 值得绑定与获取
    computed 计算属性
    v-for 循环 绑定对象 和数组
    过滤器 filter
    v-model 双向数据绑定以及修饰符
    v-on 绑定单个或多个事件
    v-bin:href 绑定链接
    .net core自动发送后台请求写法
  • 原文地址:https://www.cnblogs.com/itlover2013/p/4957261.html
Copyright © 2011-2022 走看看