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压缩的更多相关文章

  1. iOS 开发之照片框架详解(1)

    http://kayosite.com/ios-development-and-detail-of-photo-framework.html/comment-page-1 一. 概要 在 iOS 设备 ...

  2. iOS 开发之照片框架详解

    转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...

  3. 中文 iOS/Mac 开发博客列表

    中文 iOS/Mac 开发博客列表 博客地址 RSS地址 OneV's Den http://onevcat.com/atom.xml 一只魔法师的工坊 http://blog.ibireme.com ...

  4. 中文 iOS/Mac 开发博客列表(转)

    转自https://github.com/tangqiaoboy/iOSBlogCN 中文 iOS/Mac 开发博客列表 本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息. 本博客列表 ...

  5. 手把手教你ARC——iOS/Mac开发ARC入门和使用

    转载自:http://www.onevcat.com/2012/06/arc-hand-by-hand/ 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和 ...

  6. iOS 开发之照片框架详解(2)

    一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...

  7. iOS 非ARC基本内存管理系列 -手把手教你ARC——iOS/Mac开发ARC入门和使用(转)

    手把手教你ARC——iOS/Mac开发ARC入门和使用 Revolution of Objective-c 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流 ...

  8. iOS/mac开发的一些知名个人博客

    王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒. http://onevca ...

  9. Appium - iOS Mac环境结构

    Appium - iOS Mac环境结构 笔者: Max.Bai 时间: 2014/10 1. iOS开发环境的搭建 1.1系统要求 MacOS X 10.7 or higher, 10.9.2 re ...

随机推荐

  1. 关于asp.net mvc中的httpModules 与 httpHandler

    ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,A ...

  2. Tomcat下指定JDK

  3. xftp和xshell有什么区别

    XshellXshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件.它使得用户能轻松和安全地从Windows PC上访问Unix/Linux主机.Xft ...

  4. 【BZOJ4773】负环 [SPFA][二分]

    负环 Time Limit: 100 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 在忘记考虑负环之后,黎瑟的算法又出错 ...

  5. Free DIY Tour HDU1224

    一道很好的dfs加储存路径的题目  :路径保存:每次dfs都存i 当大于max时 将临时数组保存到答案数组 并不是当 当前值大于最大值时更新路径 还要加上一个条件:能回去 #include<bi ...

  6. C++语言实现-邻接表

    图的邻接表实现 邻接表是图的一种链式存储结构.主要是应对于邻接矩阵在顶点多边少的时候,浪费空间的问题.它的方法就是声明两个结构.如下图所示: 先来看看伪代码: typedef char Vertext ...

  7. 爬虫之Resquests模块的使用(二)

    Requests Requests模块 Requests模块是一个用于网络访问的模块,其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能 ...

  8. JavaNIO快速入门

    NIO是Jdk中非常重要的一个组成部分,基于它的Netty开源框架可以很方便的开发高性能.高可靠性的网络服务器和客户端程序.本文将就其核心基础类型Channel, Buffer, Selector进行 ...

  9. C# 中删除控件的事件的方法类

    方法一: 代码 /// <summary> /// 删除指定控件的指定事件 /// </summary> /// <param name="control&qu ...

  10. 11.7 NOIP模拟赛

    目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...