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. linux + docker + selenium grid 实现分布式执行selenium脚本

    Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...

  2. poj 2485 求最小生成树中 最长的一条边

    Sample Input 1 //T 3 //n0 990 692 //邻接矩阵990 0 179692 179 0Sample Output 692 prim # include <iostr ...

  3. [转] HTML5 FormData 方法介绍以及实现文件上传

    XMLHttpRequest 是一个浏览器接口,通过它,我们可以使得 Javascript 进行 HTTP (S) 通信.XMLHttpRequest 在现在浏览器中是一种常用的前后台交互数据的方式. ...

  4. 文档工具GitBook使用

    一.登陆注册 地址:https://www.gitbook.com/ 1.gitbook可使用github账号登录,如果已经注册github可以直接使用github账号登录 2.如果是github账号 ...

  5. 076 Apache的HBase与cdh的sqoop集成(不建议不同版本之间的集成)

    1.修改sqoop的配资文件 2.从mysql导入到hbase(import) bin/sqoop import \ --connect jdbc:mysql://linux-hadoop3.ibei ...

  6. ACM笔记

    写给自己看,纯属打发时间... Sacnf的返回值是成功赋值的变量个数 for(int i=0; i<100; i++)    在C++标准中指出for循环条件中定义的变量,作用域仅限于循环内部 ...

  7. 为什么macos开机黑屏但是有声音?

    一般使用时间久了,或者升级系统就会出现这个情况.完全关机,然后按开机键,再按command+option+R+P.不要松手,等重启几次,响几次(3次左右).然后松手等它自己重启即可.   mac开机黑 ...

  8. hdu 6185 递推+【矩阵快速幂】

    <题目链接> <转载于 >>> > 题目大意: 让你用1*2规格的地毯去铺4*n规格的地面,告诉你n,问有多少种不同的方案使得地面恰好被铺满且地毯不重叠.答案 ...

  9. 004.HAProxy的管理与维护

    一 安装 [root@haproxy_master ~]# yum -y install gcc gcc-c++ make openssl-devel wget openssh-clients #安装 ...

  10. 001.Linux网路配置

    一 Linux的IP别名功能 1.1 简介 一块网卡具有多个IP地址的功能称为IP别名,即一块网卡可以绑定多个IP地址. 1.2 实现 [root@master ~]# vi /etc/sysconf ...