ios-day15-02(Quartz 2D之为图片添加水印(logo),并将新的图片保存到文件)

本文介绍了一种在iOS应用中给图片添加水印的方法。通过使用UIKit框架中的UIGraphicsBeginImageContextWithOptions创建位图上下文,并将原图及水印图片绘制到该上下文中,最后获取合成后的UIImage进行展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码下载地址:http://download.youkuaiyun.com/detail/liu537192/8518797


效果图:



核心代码:

//
//  JLViewController.m
//  02-图片水印
//
//  Created by XinYou on 15-3-20.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import "JLViewController.h"

@interface JLViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;

@end

@implementation JLViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	
    // 原图
    UIImage *backgoundImage = [UIImage imageNamed:@"pic"];
    
    // 1,创建一个基于位图的上下文
    
    // 参数一:新图片的尺寸
    // 参数二:新图片是否透明。一般设置为NO:不透明
    // 参数三:固定写法:0.0
    UIGraphicsBeginImageContextWithOptions(backgoundImage.size, NO, 0.0);
    
    // 2,把原图画到基于位图的上下文
    [backgoundImage drawInRect:CGRectMake(0, 0, backgoundImage.size.width, backgoundImage.size.height)];
    
    
    // 右下角的水印
    UIImage *watermarkImage = [UIImage imageNamed:@"logo"];
    // 水印的缩放比例
    CGFloat scale = 0.2;
    // 水印与原图右边和下边的距离
    CGFloat margin = 5;
    // 水印的宽
    CGFloat watermarkW = watermarkImage.size.width * scale;
    // 水印的高
    CGFloat watermarkH = watermarkImage.size.height * scale;
    // 水印的X坐标
    CGFloat watermarkX = backgoundImage.size.width - watermarkW - margin;
    // 水印的Y坐标
    CGFloat watermarkY = backgoundImage.size.height - watermarkH - margin;
    
    // 3,把水印画到基于位图的上下文
    [watermarkImage drawInRect:CGRectMake(watermarkX, watermarkY, watermarkW, watermarkH)];
    
    // 4,从位图上下文中获取制作完毕的UIImage
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    
    // 5,结束位图上下文
    UIGraphicsEndImageContext();
    
    // 6,显示到UIImageView上面
    self.iconView.image = newImage;
    
    // 7,可以将图片压缩为PNG活着JPG格式的二进制数据,然后保存到文件中。
    // 压缩成二进制数据
//    NSData *data = UIImagePNGRepresentation(newImage);
    // 保存到文件
//    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"];
//    [data writeToFile:path atomically:YES];
    
}


@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值