关于软件PicDecor的制作笔记(二)
来源:互联网 发布:淘宝购物车营销怎么做 编辑:程序博客网 时间:2024/06/09 11:07
上一篇我们讲解了如何使用相机或者相册,这一篇将简要讲解一下如何对之前已经选择好的相片进行美化编辑,在这里,我们只是在已有的相片上添加一些小的饰品图片来进行装饰。
二.对相片(图片)进行美化编辑或装饰添加
1.首先,需要在头文件中导入响应的文件包,
#import <QuartzCore/QuartzCore.h>//用来设置动画等动态效果时使用#import "VCDecorations.h"//含有饰品小图片的控制器类#import<MessageUI/MessageUI.h>//用来发送Email时使用#import "MovableImageView.h"//之后定义的一个NSobject类,用来设置使小饰品图片可以随手指移动。
接下俩在.m文件中进行主要函数的编写。首先,要设置关于邮件发送功能的代理<MFMailComposeViewControllerDelegate>
2.设置图片显示的大小尺寸:
+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;{ UIGraphicsBeginImageContext(newSize ); [imagedrawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage*newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); returnnewImage;}
3.关于图片编辑完成后保存图片的函数
-(UIImage *)saveImage:(UIView *)view { CGRect mainRect= [[UIScreen mainScreen] bounds];//定义一个和手机屏幕大小相等的尺寸 UIGraphicsBeginImageContext(mainRect.size);//选择已有的图片并设置为mainRect尺寸 CGContextRef context =UIGraphicsGetCurrentContext();//设置图片的内容为当前选中的图片(相机拍摄得到或者相册中选择得到的) [[UIColor blackColor] set]; CGContextFillRect(context, mainRect);//函数中两个参数分别为图片的内容以及图片的尺寸 [view.layer renderInContext:context]; UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage;}
4.因为视图出现的时候有可能上面会出现一些饰品小图片,所以应该重写一个已有函数用来设置视图将要出现之前的初始化工作:
-(void)viewWillAppear:(BOOL)animated{//比嗾使当前这个界面出现之前做的一些初始化准备工作 [super viewWillAppear:animated]; NSLog(@"image: %@", editImage); if (editImage != nil) {//表示当前照片上应该出现一些饰品小图片的话,将这些小图片添加在当前照片上,再将添加有饰品的照片图片添加在主view上 [_ivEditingImage setImage:editImage]; [self.view sendSubviewToBack:_ivEditingImage]; } if (selectingImage) {//如果照片上已经显示了那些饰品小图片,那么这些图片是可以随手指移动的,而具体的功能在MovableImageView类中实现。 MovableImageView *iv = [[MovableImageView alloc] initWithImage:[AppDelegate shareDelegate].image]; [iv setUserInteractionEnabled:YES]; [self.view addSubview:iv]; } selectingImage = NO;}
5.当然了,我们还需要添加一个函数用来实现ios邮件发送的功能
- (IBAction)doEmailBtn:(UIBarButtonItem*)sender { MFMailComposeViewController *mailController= [[MFMailComposeViewController alloc] init]; mailController.mailComposeDelegate = self;//先初始化一个邮件控制器类 //隐藏toolbar for (UIView *v in[self.view subviews]) if ([v isKindOfClass:[UIToolbarclass]]) [v setHidden:YES]; UIImage *i = [selfsaveImage:self.view]; //显示toolbar for (UIView *v in[self.view subviews]) if ([v isKindOfClass:[UIToolbarclass]]) [v setHidden:NO]; NSData*imageAsData = UIImagePNGRepresentation(i);//设置要传送的数据为一张图片,也就是之前编辑好的图片 [mailControlleraddAttachmentData:imageAsData mimeType:@"image/png" fileName:@"PicDecor.png"];//添加发送主题和文件按名字 [mailControllersetSubject:@"My PicDecor Image"];//添加邮件标题 [self presentViewController:mailControlleranimated:YES completion:^{ }]; //执行完之后,系统会自动跳转到手机ios系统自带的邮件发送程序中选择发送}
0 0
- 关于软件PicDecor的制作笔记(二)
- 关于软件PicDecor的制作笔记(一)
- 关于软件PicDecor的制作笔记(三)
- 关于网页制作的软件
- 关于读取手机联系人的小程序制作笔记(二)
- 关于刷标辅助软件的制作
- 关于Metasploit的学习笔记(二)
- 软件架构笔记(二)
- 一个软件开发工程师的零散笔记总汇(二)
- MetaTrader软件的功能扩展(关于程序补丁制作的一个例子)
- 关于天天动听的高仿软件的制作
- 软件安装包制作笔记
- 关于软件版本管理的笔记
- 关于优化软件 LINGO 的学习笔记
- 关于软件测试的几点笔记
- 我的php学习笔记(二十三)制作自己的PHP+MYSQL的类
- 关于自己制作的软件被杀毒软件误报的解决办法
- Firefox扩展开发笔记 - 关于locale的使用(二)
- PL/SQL创建用户及权限分配 .
- 手机、平板多屏幕多分辨率适配
- tmp
- Oracle中表空间与临时表空间
- 关于define和typedef的区别(一)
- 关于软件PicDecor的制作笔记(二)
- lightoj 1137 Expanding Rods | 二分+几何
- HDU1003 Max Sum(最大连续子段和)
- 【Ubuntu】windows下,VM虚拟机,装Ubuntu
- C++常见的编译错误中英对应翻译
- android屏幕适配建议
- Android:Layout_weight的深刻理解
- 【项目管理】现网故障处理
- Battle Ships(完全背包)