`

iOS 绘制UIImage的方式

阅读更多
一:在绘制到context前通过矩阵垂直翻转坐标系
// uiImage是将要绘制的UIImage图片,width和height是它的宽高 
CGContextTranslateCTM(context, 0, height); 
CGContextScaleCTM(context, 1.0, -1.0); 
CGContextDrawImage(context, CGRectMake(0, 0, width, height), uiImage.CGImage); 

二:使用UIImage的drawInRect函数,该函数内部能自动处理图片的正确方向
// uiImage是将要绘制的UIImage图片,width和height是它的宽高 
UIGraphicsPushContext( context ); 
[uiImage drawInRect:CGRectMake(0, 0, width, height)]; 
UIGraphicsPopContext(); 

三:垂直翻转投影矩阵
这种方法通过设置上下颠倒的投影矩阵,使得原本y轴向上的GL坐标系看起来变成了y轴向下,并且坐标原点从屏幕左下角移到了屏幕左上角。如果你习惯使用y轴向下的坐标系进行二维操作,可以使用这种方法,同时原本颠倒的图片经过再次颠倒后回到了正确的方向:

[cpp] view plaincopy
// uiImage是将要绘制的UIImage图片,width和height是它的宽高 
 
// 图片被颠倒的绘制到context 
CGContextDrawImage(context, CGRectMake(0, 0, width, height), uiImage.CGImage); 
 
// 设置上下颠倒的投影矩阵(则原来颠倒的图片回到了正确的方向) 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrthof( 0, framebufferWidth, framebufferHeight, 0, -1, 1 ); 

===================================================
这些方法绘制出来的图片不会出现反转的情况。
/////////////////////////////////////////////////////////////////////////////

四、这种绘制的图片会发生反转
    NSString *path = [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"png"];
    UIImage *img = [UIImage imageWithContentsOfFile:path];
    CGImageRef image = img.CGImage;
    CGContextSaveGState(context);
    CGRect touchRect = CGRectMake(0, 0, img.size.width, img.size.height);
    CGContextDrawImage(context, touchRect, image);
    CGContextRestoreGState(context);

分享到:
评论

相关推荐

    ios根据图片自定义按钮实现

    通过 按钮点击检测、图片剪切 等步骤,可以得到我们最终需要的图片效果,并且在需要变换形状的时候,仅仅将mask图片替换掉即可。

    KMZDrawView:适用于iOS的简单工程图视图

    导出到UIImage对象 请参阅。 安装 使用CocoaPods。 pod 'KMZDrawView' 开始使用 创建新的Xcode项目。 安装KMZDrawView窗格,并打开工作区。 打开一个情节提要,然后将UIView添加为子视图。 将“ KMZDrawView”...

    WTGlyphFontSet:在iOS上使用字形Web字体绘制或创建图像

    WTGlyphFontSet 在您的iOS项目中轻松使用免费的Webfont图标没有在Info.plist上进行设置drawRect或生成任意大小的图像就像使用[UIImage imageNamed:]一样简单椰子足支持支持正常或视网膜显示应用上的图片较少,以...

    IOS定制属于自己的个性头像

    本文实例介绍了IOS定制属于自己的个性头像的方法,分享给大家供大家参考,具体内容如下 一、效果图 1、将一张图片剪切成圆形 2、在图片周围显示指定宽度和颜色的边框 二、实现思路 1、效果图中主要由不同尺寸的两大...

    watchOS绘制自定义图表

    源码YOChartImageKit,watchOS没有UIView类,因此 YOChartImageKit 被用来实现为自定义值的图表绘制UIImage。 可绘制包括折线图、柱状图、环形图等,分别可以调整显示选项。

    iOS实现电子签名

    本文实例为大家分享了iOS实现电子签名的具体代码,供大家参考,具体内容如下 实现原理 1、使用拖动手势记录获取用户签名路径. 2、当用户初次接触屏幕,生成一个新的UIBezierPath,并加入数组中.设置接触点为起点.在...

    UIImage使用分类进行Core Graphic绘图

    作者shenguanhua,源码GHUIImage,本demo使用Core Graphics在图片上绘制文字,文字居中显示,可修改文字和文字大小,后续会增加新的内容。喜欢的欢迎github star一个,具体用法请前往github,有问题可以联系我。

    iOS 图片裁剪 + 旋转

    之前分别介绍了图片裁剪和图片旋转方法 《iOS 图片裁剪方法》 ...《iOS 图片旋转方法》 ...裁剪和旋转是可以连在...static func cropImage(_ image: UIImage, withRect rect: CGRect, angle: Double) -> UIImage? { // Crea

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    访问者15.1 何为访问者模式15.2 何时使用访问者模式15.3 用访问者绘制TouchPainter中的Mark15.4 访问者的其他用途15.5 能不能用范畴代替访问者模式15.6 总结第16章 装饰16.1 何为装饰模式16.2 何时使用装饰模式16.3 ...

    KKSignatureView:用Objective-C编写的iOS签名控件

    KKSignatureView是用Objective-C编写的iOS签名控件。 特征 在屏幕上的任何地方轻松绘制签名 仅通过调用实例方法即可获取和设置签名图像 自定义签名的宽度和线条颜色 颜色清晰 用法 下载源并将其包含在您的项目中 ...

    iOS 图片旋转方法实例代码

    UIImage可通过CGImage或CIImage初始化,初始化方法分别为init(cgImage: CGImage, scale: CGFloat, orientation: UIImageOrientation)和init(ciImage: CIImage, scale: CGFloat, orientation: UIImageOrientation)。...

    在iOS开发的Quartz2D使用中实现图片剪切和截屏功能

     UIImage *image2=[UIImage imageNamed:@”me”];  [image2 drawAtPoint:CGPointMake(100, 100)]; } 显示: 2.剪切图片让图片圆形展示 思路:先画一个圆,让图片显示在圆的内部,超出的部分不显示。 注意:...

    iOS开发实现随机图片验证码封装

    第一眼看到图片验证码,可能会觉得图片验证码是由 UIImage 实现的,但事实上明显不是,这里简单说下图片验证码封装思路。 首先要有一个数组,里面包含 1-9、a-z 这些字符 在 UIView 上显示这些字符 同时在 UIView...

    SwiftDraw:一个用于将SVG图像解析和绘制到CoreGraphics上下文的Swift库

    用法的iOS import SwiftDrawlet image = UIImage ( svgNamed : " sample.svg " )苹果系统import SwiftDrawlet image = NSImage ( svgNamed : " sample.svg " )命令行工具在下载最新的命令行工具。 $ swiftdraw ...

    IOS实现的简单画板功能

    效果图 设计要求  1、画笔能设置大小、颜色  2、有清屏、撤销、橡皮擦、导入照片功能  3、能将绘好的画面保存到...4、导入照片功能,可以用系统的 UIImagePickerController 选取照片得到UIImage,然后再将 UIImag

    BarcodeRenderer

    UPCB条形码UPCBarcodes是用于将UPC-12和EAN-13类型的条形码绘制到UIImage的实用程序。 支持:iOS 8.0,需要ARC UPCBarcodes旨在成为通用条形码格式的轻量级实现。 无需集成数千行代码或大量复杂的设置代码。安装对于...

    leetcode苹果-SwiftLibs:[过时]Swift库、框架、扩展、工具、示例等列表

    绘制的完全可自定义的基于进度的加载器。 - 漂亮的加载动画的集合。 - 允许用户裁剪 UIImage 对象的视图控制器。 - 漂亮的 MPAndroidChart 的 iOS 端口。 - 用 Swift 编写的适用于 iOS 8 的自定义可视化日历。 - 与 ...

    SwiftSignatureView:一个轻量级、快速和可定制的选项,用于在您的应用程序中捕获流畅、可变笔画宽度的签名

    SwiftSignatureView(现在使用 PencilKit!)描述SwiftSignatureView是一种轻量级,快速且可自定义的选项,用于在您的应用... 在 PencilKit (iOS13+) 中,当用户使用他们正在使用的工具结束绘制序列时,您会获得一个

    LGDrawer 封装好的方法

    作者Friend-LGA,源码LGDrawer,LGDrawer 利用 LGDrawer 封装好的方法,可以传入参数,然后绘制出各种不同样式的 UIImage。(正方形,心形,五角星,三角形,加减号等)。 详细说明:...

    LGDrawer(iPhone源代码)

    来源: github/LGDrawer Licence: ...(正方形,心形,五角星,三角形,加减号等) 示例:绘制一个正方形 #import "LGDrawer.h" UIImage *rectangle = [LGDrawer drawRectangleWithImageSize:CGSizeMake(90.f, 90.f)

Global site tag (gtag.js) - Google Analytics