IOS 实现美图秀秀

iOS开发 在图片上添加文字,图片合成文字,图片上添加富文本,美图秀秀,美颜相机文字编辑 一:前言  1.0  :在图片上增加文字,是图片编辑中非常常见的需求。  1.1 :无demo说话不硬气,上github地址:https://github.com/horisea/PictureWhitening                欢迎star,你的星星是我持续创作的动力 二:上一下效果图 下面我们看一下功能: 1.首先文字的颜色是 阅读详情



以上界面效果是单张图片的编辑 :  具体实现过程如下:

 

  1. 第一个界面要实现两个按钮,  1.1给按钮添加点击事件 ,图片,    1.2.跳转到系统相册。

两个按钮要有tag    跳转到系统相册 的代码:@interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate>

- (IBAction)clicked:(UIButton*)sender {

   

   if (sender.tag==0) {

        //单张编辑

        self.isEdit = YES;  //声明成属性后,点击跳转的时候就可以进行判断是单张还是多张了

    }else{//拼接

       self.isEdit = NO;

        self.selectedImageViews = [NSMutableArray array];

   }

//    self.isEdit = sender.tag==0?YES:NO;

//    self.isEdit = sender.tag==0;

    //获取系统相册:

    UIImagePickerController *ipc = [[UIImagePickerController alloc]init];

    [ipc setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

   ipc.delegate = self;

    [self presentViewController:ipc animated:YES completion:nil];

   

}//判断第几个navigationcontroller然后具体跳转到哪个界面

 

 

-(void)navigationController:(UINavigationController *)navigationControllerwillShowViewController:(UIViewController*)viewController animated:(BOOL)animated{

  

   self.navi= navigationController;

    //判断是编辑还是拼接

    if (!self.isEdit&&navigationController.viewControllers.count==2) {//拼接

       

       //这里做的就是先区分,要是第二个拼接的话  里面有相关代码;

       UIView *v = [[UIView alloc]initWithFrame:CGRectMake(0, self.view.bounds.size.height-100, 320, 100)];

       v.backgroundColor = [UIColor redColor];

   

       [viewController.view addSubview:v];

        self.sv = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, 320, 80)];

       [v addSubview:self.sv];

       

       UIButton *doneBtn = [[UIButton alloc]initWithFrame:CGRectMake(260, 0, 60, 20)];

        [doneBtn addTarget:self action:@selector(doneAction) forControlEvents:UIControlEventTouchUpInside];

        [doneBtn setTitle:@"Done" forState:UIControlStateNormal];

       [v addSubview:doneBtn];

   }

   

}

 

//因为点击跳转后,需要将点击的系统相册的地址传到下一个界面,  因为系统相册界面是调用的,是navigation的所以在跳转的时候不能连线,只能通过,self.storyboard;

- (void)imagePickerController:(UIImagePickerController *)pickerdidFinishPickingMediaWithInfo:(NSDictionary*)info{

     UIImage *image = info[UIImagePickerControllerOriginalImage];//原始图片的地址给uiimage;

   

    //判断是编辑还是拼接

    if (self.isEdit) { 编辑:  因为self.isEdit是Bool是真值,所以:

      

        //跳转页面

        EditViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"EditViewController"];

        vc.editImage = image;//创建一个新的 编辑页面 然后进行跳转

       

        [self.navi pushViewController:vc animated:YES];

       

       

    }else{//拼接

       

       UIImageView *imageView= [[UIImageView alloc]initWithFrame:CGRectMake(80*self.selectedImageViews.count,0, 80, 80)];

       

       imageView.image =image;

       [self.sv addSubview:imageView];

       [self.selectedImageViews addObject:imageView];

        //设置滚动

       self.sv.contentSize= CGSizeMake(self.selectedImageViews.count*80, 0);

       

       

   }

}

 

 

3.边框界面,以及绘图页面了:   先来说下页面控件的情况:   视图中: 最底下是个VIEW  上面放了个uiimageview   然后放了个 边框的  一个绘制的;

下面的选项按钮 背景是个图片, 3个按钮    3个按钮有选中状态下的高亮图片,如果在代码中实现 这个按钮的selected的话 就会将图片显示出来

 

1实现步骤: 实现从系统相册中选择图片 显示到editviewcontroller里   然后实现 下面的scollView  将边框添加进去。

  1. 实现点击按钮不同的展示风格;

 

 

按钮显示:

- (IBAction)mainPadClicked:(UIButton*)sender {

    //把之前显示的隐藏掉

   

   

   switch (sender.tag) {

        case 0://边框

            //隐藏其它

           self.effectSV.hidden= YES;

           self.effectBtn.selected= NO;

           self.painBtn.selected= NO;

           self.painView.hidden= YES;

           self.painBtn.selected= NO;

            self.drawView.userInteractionEnabled =NO;

           

           self.frameSV.hidden= !self.frameSV.hidden;

           sender.selected= !self.frameSV.hidden;

           break;

           

        case 1://特效

           

            //隐藏其它

           self.frameSV.hidden= YES;

           self.frameBtn.selected= NO;

           self.painBtn.selected= NO;

           self.painView.hidden= YES;

           self.painBtn.selected= NO;

            self.drawView.userInteractionEnabled =NO;

           

           self.effectSV.hidden= !self.effectSV.hidden;

           sender.selected= !self.effectSV.hidden;

           

           break;

        case 2://绘制

            //隐藏其它

           self.effectSV.hidden= YES;

           self.effectBtn.selected= NO;

           self.frameSV.hidden= YES;

           self.frameBtn.selected= NO;

           

           

           self.painView.hidden= !self.painView.hidden;

           sender.selected= !self.painView.hidden;

            self.drawView.userInteractionEnabled =self.painBtn.selected;

           break;

   }

   

   

}

 

然后再程序的入口出把点击的图片传过来, B页面需要声明变量接收

- (void)viewDidLoad {

    [super viewDidLoad];

   self.currentColor= [UIColor blackColor];

    self.currentWidth = 1;

 

    self.drawView.delegate = self;

   

   //把传递过来的图片显示

   self.editImageView.image = self.editImage;

 

    // 把边框的SV初始化

    [self initFrameSV];

    //初始化特效的SV里面的内容

    [self initEffectSV];

    //添加保存按钮

    UIBarButtonItem *saveItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveAction)];

    self.navigationItem.rightBarButtonItem = saveItem;

   

}

 

给滑动控件中添加边框图片:

-(void)initFrameSV{

   for (inti=0; i<23;i++) {

       UIButton *frameBtn = [[UIButton alloc]initWithFrame:CGRectMake(50*i, 0, 50, 70)];

       frameBtn.tag = i;

       NSString *imageName = [NSString stringWithFormat:@"i-%02d.png",i];

        //如果不是设置背景图片的话 

        [frameBtn setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];

        //代码的点击事件,没有实现。   相框中添加按钮:

        [frameBtn setImage:[UIImage imageNamed:@"icon_frame_select.png"] forState:UIControlStateSelected];

        [frameBtn addTarget:self action:@selector(clickedFrame:)forControlEvents:UIControlEventTouchUpInside];

       [self.frameSV addSubview:frameBtn];

       

   }

   

   self.frameSV.contentSize = CGSizeMake(50*23, 0);

}

 

 

接下来的工作就是当点击一个边框按钮的时候  右下角标的选中状态只有一个 点击任何一个 其他的都不显示那个角标

 

-(void)clickedFrame:(UIButton*)btn{

    //拿到所有的边框按钮让每一个都不选中

   for (UIView*subView in self.frameSV.subviews){

       

       if ([subView isMemberOfClass:[UIButtonclass]]) {

           UIButton*button = (UIButton*)subView;

           button.selected= NO;

       }

        //以上的代码是实现在加边框的时候  那个按钮的图片  下面有个对勾。     下面的代码是真正实现加边框

   }

   btn.selected = YES;

    NSString *imageName = [NSString stringWithFormat:@"%02d.png",btn.tag];//这里一个很重要的地方是 btn.tag= I;

   self.frameIV.image = [UIImageimageNamed:imageName];

   

}

 

//到上面的位置的话  加边框的效果就实现完了;

 

 

 

4下面的代码是实现特效

Android仿美图秀秀与iOS相机胶卷应用开发实战 美图秀秀不仅提供基础的图片编辑功能,如裁剪、旋转和调整亮度对比度,还具备丰富的滤镜效果、贴图和文字功能。其先进的算法还支持自动美颜、美容和场景识别优化等高级功能。对于开发者来说,了解这些功能的后端实现逻辑和前端交互设计是至关重要的。要使UI看起来更接近相机胶卷的效果,通常需要对控件进行自定义。这可能包括添加阴影、圆角、渐变背景等视觉效果,以及调整控件的交互行为。 阅读详情

相关推荐

iOS仿照 美图秀秀 拼图 功能

仿照美图秀秀,实现了拼图功能,集成简单,可以参考下

iOS开发系列--打造自己的“美图秀秀”

在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架。今天我们将围绕iOS中两大图形、图像绘图框架进行介绍:Quartz 2D绘制2D图形和Core Image中强大的滤镜功能。Quartz 2D基本图形绘制视图刷新其他图形上下文Core Image。

lmrylll的博客 907

美图秀秀拼图Demo(iOS源码)

来源:Licence:MIT作者:依晨易成     模拟美图秀秀拼图功能,支持图片自由拖动,添加边框,以及不规则图形的切割。     小编注:十分不错的拼图功能实现。感谢开发者@依晨易成 。

IOS 美图 滤镜效果 CIFilter和UIImagePickerController

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33724570的博客 193

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

【DSP】【工程实战】从零构建C6678多核工程:CCS环境配置与启动模式详解

本文详细介绍了在CCS开发环境中从零构建TMS320C6678多核DSP工程的完整流程。内容涵盖KeyStone架构解析、工程创建、基础代码编写、链接命令文件配置、仿真器调试,并重点深入讲解了包括I2C EEPROM在内的多种一级启动模式原理与配置方法,为开发者提供了一套清晰、可复用的实战指南。

weixin_29164185的博客 420

美图功能ios源代码

OS5给我们带来了很多很好很强大的功能和API。Core Image就是其中之一,它使我们很容易就能处理图片的各种效果,色彩啊,曝光啊,饱和度啊,变形啊神马的。可惜苹果一直没能完善官方文档,也没有推出示例代码,所以国内很多同学可能还没有开始使用。 但国外的大神们已经证明这是个相当强悍的框架,不仅功能强大,而且可以直接使用GPU,效率奇高,甚至可以实时的对视频进行渲染。 下面让我们来看看,如何具体

procedure_1988的博客 1366

clumsy一款模拟弱网的工具

利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果。

klb5555的专栏 2552

android 滤镜lomo,iOS滤镜实现之LOMO(美图秀秀经典LOMO)(示例代码)

LOMO追求鲜艳色彩,随意、自由的态度,是一种经常使用的滤镜,今天介绍一下iOS 中LOMO滤镜的实现首先它有3张输入图像1.我们要处理的图像。即我们要应用LOMO滤镜的图像23在gpuimage中多张输入图像的滤镜需要自己写。在这里我参照本身提供的GPUImageTwoInputFilter,自己写了GPUImageThreeInputFilter,用于接收3张输入图像的滤镜。它们都是通过滤镜组...

weixin_39842937的博客 551

激光条纹中心提取——Steger

激光条纹中心提取-Steger 好久没有记录了,记录一下今天学习的内容,据说Steger在激光条纹中心提取上神一般的存在。文章和代码都分享给大家了哈,其中有四个文件,3个C++,一个python,python一个抠图文件,3个c++包含背景图+原图, 单张图提取, 多张图提取。 分享代码 #include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> #i

CharmsLUO的博客 5383

手把手教你搞定Pattern Recognition期刊的LaTeX投稿(附完整模板下载与避坑指南)

本文详细指导如何在Pattern Recognition期刊上使用LaTeX进行投稿,包括模板下载、环境配置、核心排版规范及投稿材料准备。特别强调期刊对格式的严格要求,如数学符号、图像引用等细节,并提供实用技巧和避坑指南,帮助作者高效完成投稿流程。

weixin_30876945的博客 395

iOS滤镜实现之LOMO(美图秀秀经典LOMO)

  LOMO追求鲜艳色彩,随意、自由的态度,是一种经常使用的滤镜,今天介绍一下iOS 中LOMO滤镜的实现 首先它有3张输入图像 1.我们要处理的图像。即我们要应用LOMO滤镜的图像 2       3 在gpuimage中多张输入图像的滤镜需要自己写。在这里我参照本身提供的GPUImageTwoInputFilter,自己写了GPUImageThreeInputFilter,用于接收3...

weixin_30265171的博客 288

Java 部分笔试题解析

合法的 try 语句块必须包含 try 块,并且至少包含一个 catch 块或一个 finally 块。给定一个长度为n的数组,数组中的每个元素,表示一根水管的长度,水管可以在任意位置锯开。调用 sleep() 方法、创建新线程、高优先级线程进入就绪状态只会暂停或抢占线程的执行,而不会终止线程的运行。A.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。接口中的成员变量必须是常量(static final),而抽象类可以有普通成员变量。

博客 2579

从零开始搭建一个艺术风格(深度学习)转换ios app

目前市场上关于带艺术风格转换的功能的IOS app为 1严肃艺术的Becasso。 2专注少女自拍的美图秀秀 3还有各类 电影风格转换app 比如前阵子的朋友圈上疯狂分析 <<你的名字>>风格的风景图。 4还有前阵子大热的face app。 只可惜,我认为严肃艺术的Becasso app应用场景不高,而且无法只是存储图片,每次都移到一个客厅场景是什么鬼!...

weixin_30711917的博客 112

大数据合规工程师必备的7项核心技能

当我们谈论“大数据”时,往往先想到它的价值——驱动业务增长、优化用户体验、赋能智能决策。大数据的价值越大,其合规风险的“重量”就越重。2023年,全球有超过120个国家出台了数据保护法规,中国《个人信息保护法》《数据安全法》的实施进入深水区,欧盟GDPR的罚款金额屡创新高(最高达全球营收的4%)。企业面临的合规压力,早已从“被动应对监管”升级为“主动构建合规能力”。在这样的背景下,大数据合规工程师。

SuperAGI2025 1261

SPI 总线信号完整性与时序一致性测试

SPI总线测试的核心目标是验证其电气与时序行为是否满足芯片规格要求,确保通信可靠性

硬核科技 330

蓝懿IOS学习图片编辑器

ios的学习在蓝懿另个月了,感觉学到了很多,这里的环境不错学习氛围也很好,刘国斌老师教了图片编辑,模拟美图秀秀,功能实现了边框,效果。滤镜,还有涂鸦。 #pragma mark - Image picker controller 协议方法 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPicki...

weixin_30780649的博客 112

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

仿美图秀秀 和 IOS系统 的相机胶卷

Android上面就没有这个概念的东西 —— “相机胶卷”找了好久,都没有 Androider 做过这个东西,无奈之下就只好自己动动手了。首先要感谢某个网友提供的雏形源码,经过一个多星期的修改和同事的努力,总算是成型了。 图1.入口界面,选择相册入口 图2.选择相册的界面 图3.传说中的相机胶卷 代码结构采用非常典型的MVC模式,代码中也附带了...

weixin_30364147的博客 242

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

利用Photos 框架搭建美图秀秀相册选择器

简介:Photos框架是iOS8.0后推出的一个新的用于对系统相册进行相关操作的,在iOS8.0之前,开发中只能使用AssetsLibrary框架来访问移动设备的图片库。本文中不再对AssetsLibrary做过多的介绍,仅针对Photos框架进行详细介绍。并且以美图秀秀的照片选择器作为实例载体进行功能实现。 首先要获取系统的所有相册,有多个方法可以选择 1.该方法通过唯一标识符identif...

weixin_34217711的博客 184

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

美图秀秀首页界面按钮设计(二)

  本文实现美图秀秀首页中的按钮,它包含3张图片和一个文本。通过开发按钮,我们可以学到iOS的自定义控件,绘制图片和文本的知识。【声明:本博客只能用作学习用途,不得用于商业用途,图片资源均来自官方,产生纠纷,本人不负责】效果如下图      关于绘制控件显示内容,我们需要使用CoreGraphics框架,下面简单介绍一下CoreGraphics。     CoreGraphics   C...

weixin_33730836的博客 327

图片处理

iOS 开发类似美图秀秀那样处理图片特效的开源库:GPUIMAGE,Instragram就是用的这个 http://www.cocoachina.com/bbs/read.php?tid-48101-page-1.html

CC的专栏 486

通过自定义相册来介绍photo library的使用

  因为我在模仿美图秀秀的功能,在使用相册时候,UIImagePickerController本来就是一个UINavigationController的子类,所以没有办法使用push,所以做了一个自定义的非UINavigationController子类的相册。使用的api是ios8以上提供的photokit。   一、获取相册的所有相册集   例如:个人收藏,最近添加,相机胶卷等。   1...

weixin_34195364的博客 319

2026手机免费去水印APP怎么选?安卓苹果通用,无广告免费去水印软件+短视频无水印导出全攻略

日常刷抖音、小红书、快手等平台,遇到喜欢的短视频、高清图片,想要保存到手机相册,总会被自带水印影响观感;日常截图、海报修图,边角多余水印也十分影响使用体验。市面上大部分去水印工具要么强制充值会员、要么充斥弹窗广告、要么需要上传本地素材存在隐私风险,很多普通用户都想找到的手机去水印工具,同时想要实现。第二类是免下载安装、手机全端适配的微信去水印小程序,作为APP之外的轻量化补充工具。所有工具均免费使用、无隐形消费,大家可以根据自身使用场景按需选择。

GYRYIJF的博客 217

2026手机抠图软件APP保姆级教程|免费安卓苹果人像物品一键去背景方法大全

日常自拍、头像、宠物、小件商品临时抠图,追求免下载、免费无水印:首选抠图喵微信小程序,2026 年综合便捷度远超各类手机抠图软件 APP,安卓苹果全机型通用;求职、签证、各类标准证件照更换底色、调整尺寸:直接使用立得一寸照小程序,专项工具操作更简单;平时喜欢修自拍、需要抠图 + 美颜滤镜一体操作:下载醒图这款手机抠图 APP;老年人、零基础新手快速做证件照、简单白底图:美图秀秀操作门槛最低;做创意海报、多层图片艺术合成:选用 PicsArt 美易;

asyncs的博客 38
上一篇: IOS 实现植物大战僵尸
下一篇: IOS 网络,客户端,服务端
NameUseNsstring
博客等级 码龄11年 1粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值