Quartz2D图片处理

//
//  ViewController.m
//  Quartz2D图片处理
//
//  Created by dllo on 16/3/30.
//  Copyright © 2016年 HaiTeng. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor cyanColor];

    UIImageView *imgV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)];
    imgV.center = self.view.center;
    [self.view addSubview:imgV];

//    imgV.image = [self addWaterMark:[UIImage imageNamed:@"手艺人.jpg"]];
    imgV.image = [self imageCutter:[UIImage imageNamed:@"手艺人.jpg"]];

    imgV.image = [self screenShotCut];
    self.view.backgroundColor = [UIColor whiteColor];
}

#pragma mark - 加水印
- (UIImage *)addWaterMark:(UIImage *)sourceImage
{
     //上下文 位图上下文
     //与layer层的上下文不同的是 layer层上下文是获取到的 ,位图上下文需要我们手动创建
     //位图上下文与layer层无关 所以不用再DrawRect方法里面实现

     //1.上下文 创建位图上下文
    /*
     <#CGSize size#>        上下文大小
     <#BOOL opaque#>        是否透明
     <#CGFloat scale#>      缩放比例
     */
    UIGraphicsBeginImageContextWithOptions(sourceImage.size, NO, 0);

    //2.绘制内容
    //绘制源图片到上下文
    [sourceImage drawAtPoint:CGPointZero];
    //绘制文字在上下文
    NSString *str = @"手艺人";
    /*
     第一个参数: 相对于源图片自己大小 给point值
     第二个参数: 给文字设置富文本

     */
    //设置文字样式
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    dic[NSForegroundColorAttributeName] = [UIColor blackColor];
    dic[NSFontAttributeName] = [UIFont boldSystemFontOfSize:50.f];

    [str drawAtPoint:CGPointMake(sourceImage.size.width - 200, sourceImage.size.height - 200) withAttributes:dic];

    //3.从当前位图上下文 生成带有水印的图片
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

    //4.关闭上下文(放在内存泄露)
    UIGraphicsEndImageContext();

    return img;
}

#pragma mark - 图片截圆
- (UIImage *)imageCutter:(UIImage *)SourceImg{
    //1.开启上下文
    UIGraphicsBeginImageContextWithOptions(SourceImg.size, NO, 0);

    //2.获取裁剪区域
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, SourceImg.size.width, SourceImg.size.height)];

    //将路径设置为裁剪区域
    [path addClip];

    //3.绘制图片
    [SourceImg drawAtPoint:CGPointZero];

    //4.生成图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    //关闭上下文
    UIGraphicsEndImageContext();

    return image;
}

#pragma mark 截屏
- (UIImage *)screenShotCut
{
    //开启上下文
    UIGraphicsBeginImageContextWithOptions([UIScreen mainScreen].bounds.size, NO, 0);
    //获取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //将self.view的控件 渲染到上下文
    [self.view.layer renderInContext:ctx];

    //生成图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    //关闭
    UIGraphicsEndImageContext();

    return image;
}

@end
时间: 2024-08-17 13:21:59

Quartz2D图片处理的相关文章

【iOS】Quartz2D图片剪切

一.使用Quartz2D完成图片剪切1.把图片显示在自定义的view中 先把图片绘制到view上.按照原始大小,把图片绘制到一个点上. 代码: 1 - (void)drawRect:(CGRect)rect 2 { 3 UIImage *image2=[UIImage imageNamed:@"me"]; 4 [image2 drawAtPoint:CGPointMake(100, 100)]; 5 } 显示: 2.剪切图片让图片圆形展示 思路:先画一个圆,让图片显示在圆的内部,超出的

iOS边练边学--(Quartz2D)图片裁剪,带圆环的裁剪

一.图片裁剪,示意图 二.带圆环的图片裁剪示意图

iOS边练边学--(Quartz2D)图片添加水印

一.给图片添加水印的基本步骤 加载图片 手动创建位图上下文 绘制原生的图片 给原生的图片添加文字 生成一张图片给我们,从上下文中获取图片 关闭上下文 二.注意:位图上下文的获取方式跟layer上下文不一样.位图上下文需要我们手动创建 三.效果图

iOS UI进阶-1.1 Quartz2D 图片水印/裁剪/截图

图片水印 UIImage+MJ.h #import <UIKit/UIKit.h> @interface UIImage (MJ) /** * 打水印 * * @param bg 背景图片 * @param logo 右下角的水印图片 */ + (instancetype)waterImageWithBg:(NSString *)bg logo:(NSString *)logo; @end UIImage+MJ.m #import "UIImage+MJ.h" @imple

quartz2D 图片剪切

- (void)drawRect:(CGRect)rect { // Drawing code // 画圆, 以便于以后指定可以显示内容范围 CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 50, 50)); // 指定上下文中可以显示内容的范围 CGContextClip(ctx); CGContextStrokePath(ctx); /*

iOS开发 - Quartz2D绘图

Quartz 2D简介 是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件 - - drawRect:方法的使用 常见图形的绘制:线条.多边形.圆 绘图状态的设置:文字颜色.线宽等 图形上下文状态的保存与恢复 图形上下文栈 为了便于搭建美观的UI界面,iOS提供了UIKit框架,里面有各种各样的UI控件 UILabel:显示文字 UIImag

Quartz2D 给图片打水印

1. 水印:在图片上加的防止他人盗图的半透明logo.文字.图标  水印作用:告诉你这个图片从哪来的 2. 实现方式:利用Quartz2D,将水印(文字.LOGO)画到图片的右下角 将代码封装成UIImage的分类方法,便于使用 1 + (instancetype)waterImageWithBg:(NSString *)bg logo:(NSString *)logo { 2 UIImage *oldImage = [UIImage imageNamed:bg]; 3 // 1.创建一个基于位

iOS Quartz2D绘制线、矩形、弧、圆、文字、图片

利用Quartz2D中提供的图层上下文 Layer Graphics Context,进行简单绘制线.矩形.弧.圆.文字.图片 在storyBoard中得拖入控制器,添加多个UIView控件,并把各个UIView的class修改为自定义的类. 如: 绘制线: // // HJLineView.m // 画线三角矩形圆 // // Created by HJiang on 15/1/2. // Copyright (c) 2015年 HJiang. All rights reserved. //

Quartz2D练习 -- 裁剪图片分类

Main.storyboard <?xml version="1.0" encoding="UTF-8" standalone="no"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5053" systemVers