ios--图片处理(修改、保存)

UIGraphicsBeginImageContext创建一个基于位图的上下文(context),并将其设置为当前上下文(context)。方法声明如下

void UIGraphicsBeginImageContext(CGSize size);

size为新创建的位图上下文的大小。它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的图形大小。

该函数的功能同UIGraphicsBeginImageContextWithOptions的功能相同,相当与UIGraphicsBeginImageContextWithOptions的opaque参数为NO,scale因子为1.0。

UIGraphicsBeginImageContextWithOptions

函数原型为:

void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);

size——同UIGraphicsBeginImageContext

opaque—透明开关,如果图形完全不用透明,设置为YES以优化位图的存储。

scale—–缩放因子


UIImageC处理

1、等比缩放

C代码     - (UIImage *) scaleImage:(UIImage *)image toScale:(float)scaleSize {
  1. UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize);
  2. [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
  3. UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
  4. UIGraphicsEndImageContext();
  5. return scaledImage;
  6. }

 

2、自定义大小

C代码 
  1. - (UIImage *) reSizeImage:(UIImage *)image toSize:(CGSize)reSize {
  2. UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height));
  3. [image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];
  4. UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
  5. UIGraphicsEndImageContext();
  6. return reSizeImage;
  7. }

 

3、处理某个特定的view

只要是继承UIView的object 都可以处理
必须先import QuzrtzCore.framework

C代码 
  1. -(UIImage*) captureView:(UIView *)theView {
  2. CGRect rect = theView.frame;
  3. UIGraphicsBeginImageContext(rect.size);
  4. CGContextRef context = UIGraphicsGetCurrentContext();
  5. [theView.layer renderInContext:context];
  6. UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
  7. UIGraphicsEndImageContext();
  8. return img;
  9. }

 

4、存储图片

4.1、存储到app的文件里

把要处理的图片以image.png的名字存储到app home地下的Document目录中

 

C代码 
  1. NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"image.png"];
  2. [UIImagePNGRepresentation(image) writeToFile:pathatomically:YES];

4.2、存储手机的图片库中

C代码 
  1. CGImageRef screen = UIGetScreenImage();
  2. UIImage* image = [UIImage imageWithCGImage:screen];
  3. CGImageRelease(screen);
  4. UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);

 

 

 

获取当前app的名称和版本号

C代码 
  1. NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
  2. // app名称
  3. NSString *name = [infoDictionary objectForKey:@"CFBundleDisplayName"];
  4. // app版本
  5. NSString *version = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
  6. // app build版本
  7. NSString *build = [infoDictionary objectForKey:@"CFBundleVersion"];

 

 

UILabel根据text自动调整大小

 

C代码 
  1. label.text = @"**********";
  2. CGRect frame = label.frame;
  3. frame.size.height = 10000; // 设置一个很大的高度
  4. label.frame = frame;
  5. [label sizeToFit];
  6. frame.size.height = label.frame.size.height;
  7. label.frame = frame;

 

 

直接拨打有分机号的电话

 

C代码 
  1. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://01011112222,3333"]];

 

一些有关图像处理的代码片段

- (UIImage *)rescaleImage:(UIImage *)img ToSize:(CGSize)size; //图片缩放裁剪

- (UIImage*)transformWidth:(CGFloat)width height:(CGFloat)height; //改变大小

+ (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2; //合并图片

+ (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect; //裁剪部分图片

+ (void)imageSavedToPhotosAlbum:(UIImage *)image

didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo; //保存图片到媒体库


零)重新设置图片的尺寸

- (UIImage *)rescaleImage:(UIImage *)img ToSize:(CGSize)size {

CGRect rect = CGRectMake(0.0, 0.0, size.width, size.height);

UIGraphicsBeginImageContext(rect.size);

[img drawInRect:rect]; // scales image to rect

UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return resImage;

}

-)根据给定得图片,从其指定区域截取一张新得图片

-(UIImage *)getImageFromImage{

//大图bigImage

//定义myImageRect,截图的区域

CGRect myImageRect = CGRectMake(10.0, 10.0, 57.0, 57.0);

UIImage* bigImage= [UIImage imageNamed:@"k00030.jpg"];

CGImageRef imageRef = bigImage.CGImage;

CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);

CGSize size;

size.width = 57.0;

size.height = 57.0;

UIGraphicsBeginImageContext(size);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextDrawImage(context, myImageRect, subImageRef);

UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];

UIGraphicsEndImageContext();

return smallImage;

}

二) 合并两张图片

- (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 {

UIGraphicsBeginImageContext(image1.size);

// Draw image1

[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];

// Draw image2

[image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];

UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return resultingImage;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、软件破解之前,先运行下载文件中的magicexif_setup_0813.exe安装软件 2、鼠标双击下载下来的安装程序。如果系统提示“无法验证发布者,您确定要运行此软件吗”请点“运行”按钮。 3、双击安装文件,进入安装程序欢迎页面,点击"next“开始安装,然后根据安装向导完成安装即可; 4、注意,软件安装完成之后,不要启动软件,因为这个破解方法不能在软件运行的情况下进行。将下载文件夹中的MagicEXIF.exe复制到软件的安装目录中替换同名文件 5、然后打开软件,可以看到,注册按钮是会社的,而且显示授权给旗舰版用户,无到期时间说明软件成功注册 软件特点: 1、强大的解码能力,看穿照片背后的一起隐藏信息 MagicEXIF 直接支持 EXIF2.3 和 TIFF6 标准,可从 JPEG/EXIF/TIFF/RAW 等多种文件格式中读取并编辑超过 1500 项 EXIF、GPS 数据,当中包括佳能、尼康、索尼、富士等内的16个常见的设备生产商的厂商注释项目。诸如快门次数、镜头参数、光圈档位,甚至是相机温度、转存次数等都能轻松查看和编辑 2、GPS数据可视化,照片地理信息一览无余 MagicEXIF 不仅可以读取和修改照片中的 GPS 地理数据,更能够通过内置的地图组件将 GPS 数据直接呈现在地图上。MagicEXIF 拥有强大的地图偏移修正功能,能够准确解密并修正 BD-09、GCJ-02 坐标系的偏移,真正实现精确定位。无论是探索自己或他人的旅行足迹,还是往照片中添加地理数据来归档照片、记录旅途,相信您总能找到属于自己的乐趣。对于航拍爱好者,您还可以使用 GPS 批量导入导出工具一次性把 GPS 数据导入到照片中或从照片中导出 3、一键清楚图像编辑历史,网络分享无忧,无惧隐私泄露 许多诸如 Adobe Photoshop 等图像编辑软件在转存图像后会自动插入大量其私有的元数据以方便图像编辑历史的管理,但事实上用户往往并不需要、也察觉不到这些信息。MagicEXIF 可以智能识别出这些私有数据以及其他被修改的项目,并将其彻底清除,从而保护图像的原始性和用户隐私 4、高真度原厂编码引擎,从此不怕原始数据丢失或损坏 MagicEXIF 不仅可以重编码图像的EXIF数据,更能够使用一系列原创的JPEG编码器对图像进行转码操作,从而生成带有原始EXIF数据的JPEG图像。经过 MagicEXIF 重构的图像与原厂数码相机出片并无明显差异,由此用户可以恢复由于压缩或编辑而丢失的图像数据,从此再也不怕原始数据意外丢失或损坏。 5、全面中文和Unicode支持,记录图像的点点滴滴 MagicEXIF 直接支持中文GBK编码,甚至允许用户使用日文JIS编码和Unicode字符插入自定义用户注释,可插入的文字长度超过50kb,能够满足新闻工作者、专业摄影师等以及普通用户对于图像记录和图像归档的需求。 6、批量处理修改图像属性就是这么轻松 MagicEXIF 允许用户对多个图像文件进行批量操作,可操作的范围涵盖所有标准甚至非标准EXIF、GPS以及其他项目。MagicEXIF 还允许用户使用动态时间,每完成处理一张图的拍摄时间后系统会为这个时间自动加上一个指定范围的值作为下一张图的拍摄时间,整个过程用户无需介入,省时省力 常见问题: 1、运行 MagicEXIF 元数据编辑器有什么要求? MagicEXIF 元数据编辑器运行所需的系统要求很低,在 Windows XP(或 Windows NT 5.1)以上系统上即可顺利安装与运行,并且同时支持 32 位和 64 位的操作系统。但是在 Windows XP 下,因受到系统应用程序接口限制,与 UTC 时间计算有关的功能将无法使用,因此我们推荐使用 Windows 7 以上的操作系统。 2、软件可用编辑 RAW 文件吗? 目前 MagicEXIF 元数据编辑器可以直接打开 RAW 文件并读取当中的 EXIF、XMP 等元数据。但是为了保证 RAW 文件在编辑后的可读性,软件目前并不直接支持 RAW 格式的保存。对于 RAW 文件中的元数据,我们推荐先转存为 EXIF 格式的模板文件,然后再导入到转码后的 TIFF 或 JPEG 图像格式中。 3、照片编辑后会改变底层的数据编码方式或丢失原始信息吗? 传统的图片处理软件(包括 Adobe Photoshop、ACDSee 等在内)或其他 EXIF 编辑器在编辑图像后只能够保证 EXIF 部分数据的可读性,因此使用这些软件编辑图像后往往会令厂商注释、XMP、MPF、压缩特征等非标准 EXIF 部分的数据损坏甚至完全丢失。而 MagicEXIF 元数据编辑器拥有自主研发的强大的编码器,在不改变照片原本编码
### 使用场景 为不同客户做定制化开发同一款app,功能相同,图片素材、显示的文字、配置和证书不同,每次人工替换素材和更换证书打包费时费力,所以使用python脚本实现自动化替换资源,自动化打包。 ### 文件说明 *Config.py*    配置脚本 *AutoPackage.py*    自动化脚本 *PrepareImagesTool.py*    拷贝工程中的图片结构出来用来更换后准备替换 ### 客户需要提供 1、app的中英文名字 2、服务器的ip地址 3、反馈邮箱 4、微信和QQ的分享Id,用于支持分享文件到微信和qq,需要到微信和qq开发者平台申请 5、到apple developer平台申请4个App Id并下载描述文件,如`Config.y`中所示 6、在mac电脑中导出p12文件 7、*customization* 文件夹中 *Contents.json* 描述大小和同名的图片素材,并放在对应目录下 ### 功能流程说明 `替换图片资源`-->`替换文字资源`-->`替换 group id`-->`替换微信和qq分享 id`-->`替换反馈邮箱`-->`设置服务器地址`-->`修改配置文件重新签名不同的scheme`-->`打包ipa` ### 使用说明(ios开发者) #### 准备阶段 + 执行`$ python PrepareImagesTool.py`,将工程中的图片拷贝到 *customization* 目录下,用于提供给客户提供定制化的图片 #### 打包阶段 + 1、安装`pip` + 安装命令:`$ python get-pip.py` + 2、安装Python虚拟环境virtualenv + `$ sudo pip install virtualenv` + 3、进入当前文件目录 + 为一个工程创建一个虚拟环境 `$ virtualenv env` + 激活虚拟环境 `$ source env/bin/activate` + 4、安装所需Python包 ``` $ pip install -v Pillow==4.0.0 // 用于比较图片大小 $ pip install -v pbxproj==2.0.5 // 用于处理xcode配置文件 ``` + 5、配置项目 + 将图片放入 *customization* 文件夹下(按照目录结构) + 修改`Config.py`配置文件 + 6、自动打包 + 执行`$ python AutoPackage.py` + 7、打包好的文件保存在 *history* 目录下 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值