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 ...
随机推荐
- 关于asp.net mvc中的httpModules 与 httpHandler
ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,A ...
- Tomcat下指定JDK
- xftp和xshell有什么区别
XshellXshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件.它使得用户能轻松和安全地从Windows PC上访问Unix/Linux主机.Xft ...
- 【BZOJ4773】负环 [SPFA][二分]
负环 Time Limit: 100 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 在忘记考虑负环之后,黎瑟的算法又出错 ...
- Free DIY Tour HDU1224
一道很好的dfs加储存路径的题目 :路径保存:每次dfs都存i 当大于max时 将临时数组保存到答案数组 并不是当 当前值大于最大值时更新路径 还要加上一个条件:能回去 #include<bi ...
- C++语言实现-邻接表
图的邻接表实现 邻接表是图的一种链式存储结构.主要是应对于邻接矩阵在顶点多边少的时候,浪费空间的问题.它的方法就是声明两个结构.如下图所示: 先来看看伪代码: typedef char Vertext ...
- 爬虫之Resquests模块的使用(二)
Requests Requests模块 Requests模块是一个用于网络访问的模块,其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能 ...
- JavaNIO快速入门
NIO是Jdk中非常重要的一个组成部分,基于它的Netty开源框架可以很方便的开发高性能.高可靠性的网络服务器和客户端程序.本文将就其核心基础类型Channel, Buffer, Selector进行 ...
- C# 中删除控件的事件的方法类
方法一: 代码 /// <summary> /// 删除指定控件的指定事件 /// </summary> /// <param name="control&qu ...
- 11.7 NOIP模拟赛
目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...