ios mac 对照片进行JPEG压缩
ios mac 对照片进行JPEG压缩
1. 在iOS上可以使用 API UIImageJPEGRepresentation 对照片数据进行JPEG压缩;
我们知道iOS其实是MAC OS 的移植,那么MAC上肯定也有相应的JPEG压缩方法;
在mac上了,找了NSImage的API没有发现直接的JPEG压缩方法;
但是有NSBitmapImageRep,下面来测试一下,iOS和MAC上的JPEG压缩是否一致;
2. 首先用iOS 来压缩一张照片
UIImage *timg = [UIImage imageWithContentsOfFile:@"/Users/cc/Desktop/testiOS/IMG_0420.PNG"];
for (int i = ; i <; i++) {
NSData *cd = UIImageJPEGRepresentation(timg, (i+)/10.0f);
[cd writeToFile:[NSString stringWithFormat:@"/Users/cc/Desktop/testiOS/com%.1f.jpeg",(i+)/10.0f] atomically:YES];
}
得到结果:(压缩比0.1~1.0)

3. MAC API对照片进行JPEG压缩
//参数校验
if (argc!=) {
printf("参数错误,请检测!\n");
printf("本程序主要是对图片进行JPEG压缩\n");
printf("示例:./JPEGCompress /xxpath/imgfile /xxpath/out.jpeg 0.4 \n");
printf("参数一:要压缩的图片;参数二:输出路径;参数三:压缩比0.1~1.0之间\n"); return -;
} NSString *inPath = [NSString stringWithCString:argv[] encoding:NSUTF8StringEncoding];
NSString *outPath = [NSString stringWithCString:argv[] encoding:NSUTF8StringEncoding];
float compress = [[NSString stringWithCString:argv[] encoding:NSUTF8StringEncoding] floatValue]; NSImage *simg = [[NSImage alloc]initWithContentsOfFile:inPath];
NSData *imgDt = [simg TIFFRepresentation];
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:imgDt];
NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:compress] forKey:NSImageCompressionFactor];
imgDt = [imageRep representationUsingType:NSJPEGFileType properties:imageProps]; int ret = [imgDt writeToFile:outPath atomically:YES];
if (ret>) {
printf("in: %s\nout: %s\ncompress: %s\nSUCCESS\n",argv[],argv[],argv[]);
}else
{
printf("FAILURE!\n");
}
return ret;
得到结果:压缩比(0.1~1.0)

4. 通过上面的结果,可以看出,同样的压缩比,压缩出来的照片大小是一样的;
但是我在比较上面相同大小文件的MD5时发现是不一样的;
所以理论上MAC和iOS上的JPEG压缩是一致的,但并不是完全一致!
ios mac 对照片进行JPEG压缩的更多相关文章
- iOS 开发之照片框架详解(1)
http://kayosite.com/ios-development-and-detail-of-photo-framework.html/comment-page-1 一. 概要 在 iOS 设备 ...
- iOS 开发之照片框架详解
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...
- 中文 iOS/Mac 开发博客列表
中文 iOS/Mac 开发博客列表 博客地址 RSS地址 OneV's Den http://onevcat.com/atom.xml 一只魔法师的工坊 http://blog.ibireme.com ...
- 中文 iOS/Mac 开发博客列表(转)
转自https://github.com/tangqiaoboy/iOSBlogCN 中文 iOS/Mac 开发博客列表 本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息. 本博客列表 ...
- 手把手教你ARC——iOS/Mac开发ARC入门和使用
转载自:http://www.onevcat.com/2012/06/arc-hand-by-hand/ 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和 ...
- iOS 开发之照片框架详解(2)
一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...
- iOS 非ARC基本内存管理系列 -手把手教你ARC——iOS/Mac开发ARC入门和使用(转)
手把手教你ARC——iOS/Mac开发ARC入门和使用 Revolution of Objective-c 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流 ...
- iOS/mac开发的一些知名个人博客
王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒. http://onevca ...
- Appium - iOS Mac环境结构
Appium - iOS Mac环境结构 笔者: Max.Bai 时间: 2014/10 1. iOS开发环境的搭建 1.1系统要求 MacOS X 10.7 or higher, 10.9.2 re ...
随机推荐
- poj3728 倍增法lca 好题!
lca的好题!网上用st表和离线解的比较多,用树上倍增也是可以做的 不知道错在哪里,等刷完了这个专题再回来看 题解链接https://blog.csdn.net/Sd_Invol/article/de ...
- DOMContentLoaded与load的区别
声明:此文章为转载(点击查看原文),如有侵权24小时内删除.联系QQ:1522025433. (1)在chrome浏览器的开发过程中,我们会看到network面板中有这两个数值,分别对应网 络请求上的 ...
- 步步为营-47-分页显示的SQL语句
说明:分页显示在实际业务中经常需要用到,其SQL语句分两种 1:分页显示SQL语句 --方法一:跳过多少行,选中多少行 --每页n条,选择第m页--n= m= --)*n 主键 from 表); se ...
- HDU1711 Number Sequence(KMP模板题)
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【C语言】 二叉树的基本运算
• 二叉树节点类型BTNode: typedef struct node { char data; struct node *lchild, *rchild; } BTNode; 创建二叉树 void ...
- Python divmod方法
有95条数据 每十条存一页 all_item = 95 pager = 10 result = all_item.__divmod__(pager) print(result) (9{商},5{余数} ...
- 066 linux下时间的修改
1.关于时间的修改,在linux还是很重要的,在这里只是介绍一个简单的常用的命令,并且时间不会写入到系统. 2.命令 3.如果想把时间写进系统 修改完成之后,输入clock -w 时间将会被写进CMO ...
- 算法竞赛入门经典-训练指南(10881-Piotr's Ants)
题目大意: 一根长度为L的木棍一堆蚂蚁爬,向左或向右,速度都为1,若两蚂蚁碰撞则同时转头(转身时间忽略不计),问T时间之后每只蚂蚁的位置: 输入:t,(t个样例),每个样例输入 L,T,n,接下来是n ...
- IdentityServer4-前后端分离的授权验证(六)
上两节介绍完Hybrid模式在MVC下的使用,包括验证从数据获取的User和Claim对MVC的身份授权.本节将介绍Implicit模式在JavaScript应用程序中的使用,使用Node.js+Ex ...
- 微信小程序:一起玩连线,一个算法来搞定
微信小程序:一起玩连线 游戏玩法 将相同颜色的结点连接在一起,连线之间不能交叉. 算法思想 转换为多个源点到达对应终点的路径问题,且路径之间不相交.按照dfs方式寻找两个结点路径,一条路径探索完之后, ...