博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]常用iOS图片处理方法
阅读量:7186 次
发布时间:2019-06-29

本文共 4105 字,大约阅读时间需要 13 分钟。

自:
 ========== (one) UIImage 图像 等比例缩放
==================================
PicAfterZoomWidth:缩放后图片宽  PicAfterZoomHeight:缩放后图片高 (预定义)

+ (UIImage *)getPicZoomImage:(UIImage *)image {

 

    UIImage *img = image;

    

    int h = img.size.height;

    int w = img.size.width;

    if(h <= PicAfterZoomWidth && w <= PicAfterZoomHeight)

    {

        image = img;

    }

    else 

    {

        float b = (float)PicAfterZoomWidth/w < (float)PicAfterZoomHeight/h ? (float)PicAfterZoomWidth/w : (float)PicAfterZoomHeight/h;

        CGSize itemSize = CGSizeMake(b*w, b*h);

        UIGraphicsBeginImageContext(itemSize);

        CGRect imageRect = CGRectMake(0, 0, b*w, b*h);

        [img drawInRect:imageRect];

        img = UIGraphicsGetImageFromCurrentImageContext();

        UIGraphicsEndImageContext();

    }

    return img;

}

 =============== ( two )把图片 圆角 化==================================

 

static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,

                                 float ovalHeight)

{

    float fw, fh;

    if (ovalWidth == 0 || ovalHeight == 0) {

        CGContextAddRect(context, rect);

        return;

    }

    CGContextSaveGState(context);

    CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));

    CGContextScaleCTM(context, ovalWidth, ovalHeight);

    fw = CGRectGetWidth(rect) / ovalWidth;

    fh = CGRectGetHeight(rect) / ovalHeight;

    CGContextMoveToPoint(context, fw, fh/2);  // Start at lower right corner

    CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);  // Top right corner

    CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner

    CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner

    CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right

    CGContextClosePath(context);

    CGContextRestoreGState(context);

}

+ (id) createRoundedRectImage:(UIImage*)image size:(CGSize)size

{

    // the size of CGContextRef

    int w = size.width;

    int h = size.height;

    

    UIImage *img = image;

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace,kCGImageAlphaPremultipliedFirst);

    CGRect rect = CGRectMake(0, 0, w, h);

    CGContextBeginPath(context);

    addRoundedRectToPath(context, rect, 10, 10);

    CGContextClosePath(context);

    CGContextClip(context);

    CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);

    CGImageRef imageMasked = CGBitmapContextCreateImage(context);

    CGContextRelease(context);

    CGColorSpaceRelease(colorSpace);

    return [UIImage imageWithCGImage:imageMasked];

}

=============== (Three)给图片 添加阴影==================================

請先添加库 import QuartzCore.framework

然后要导入头文件 #import <QuartzCore/QuartzCore.h>

[[myView layer] setShadowOffset:CGSizeMake(5, 5)]; //设置阴影起点位置

[[myView layer] setShadowRadius:6];                       //设置阴影扩散程度

[[myView layer] setShadowOpacity:1];                      //设置阴影透明度

[[myView layer] setShadowColor:[UIColor blueColor].CGColor]; //设置阴影颜色

 ========== (Four) UIImage 图像 旋转==================================

- (UIImage *)imageRotatedByRadians:(CGFloat)radians

{

    return [self imageRotatedByDegrees:radians * 180/M_PI];

}

- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees 

{   

    // calculate the size of the rotated view's containing box for our drawing space

    UIView *rotatedViewBox = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.size.width,self.size.height)];

    CGAffineTransform t = CGAffineTransformMakeRotation(degrees * M_PI / 180);

    rotatedViewBox.transform = t;

    CGSize rotatedSize = rotatedViewBox.frame.size;

    [rotatedViewBox release];

    // Create the bitmap context

    UIGraphicsBeginImageContext(rotatedSize);

    CGContextRef bitmap = UIGraphicsGetCurrentContext();

    // Move the origin to the middle of the image so we will rotate and scale around the center.

    CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);

    

    //   // Rotate the image context

    CGContextRotateCTM(bitmap, degrees * M_PI / 180);

    // Now, draw the rotated/scaled image into the context

    CGContextScaleCTM(bitmap, 1.0, -1.0);

    CGContextDrawImage(bitmap, CGRectMake(-self.size.width / 2, -self.size.height / 2,self.size.width, self.size.height), [self CGImage]);

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return newImage;

}

图像旋转更多请看:

转载于:https://www.cnblogs.com/jz319/p/4084158.html

你可能感兴趣的文章
搭建两个节点的大数据集群-1.hdfs集群
查看>>
Ron's Editor - Ultimate CSV Editor:免费的 CSV 编辑器,支持 UTF-8 字符集
查看>>
绝对定位下的水平居中实现
查看>>
关于 preg_replace_callbank 的学习记录
查看>>
BeautyWe.js 一套专注于微信小程序的开发范式
查看>>
数字签名和数字证书等openssl加密基本术语
查看>>
前端常用CSS小技巧
查看>>
(十二)本地存储及同步
查看>>
我所感兴趣的iOS10新特性
查看>>
玩转音频、视频的利器:FFmpeg
查看>>
一个苏州IT人的5年挨踢经历-------面试篇(之二)
查看>>
redis学习总结1
查看>>
【作业】结对编程纪实
查看>>
内核如何检测SOFT LOCKUP与HARD LOCKUP?
查看>>
二十四种设计模式:享元模式(Flyweight Pattern)
查看>>
316. Remove Duplicate Letters
查看>>
golang实现任务分发处理
查看>>
C# 获取SQL Server所有的数据库名称
查看>>
利用51单片机制作的电子时钟
查看>>
一个简单Java多线程的应用
查看>>