当前位置:首页 > 操作系统 > MacOs

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:<span>@"</span><span>/Users/cc/Desktop/testiOS/IMG_0420.PNG</span><span>"</span><span>];
    </span><span>for</span> (<span>int</span> i = <span>0</span>; i <<span>10</span>; i++<span>) {
        NSData </span>*cd = UIImageJPEGRepresentation(timg, (i+<span>1</span>)/<span>10.0f</span><span>);
        [cd writeToFile:[NSString stringWithFormat:</span><span>@"</span><span>/Users/cc/Desktop/testiOS/com%.1f.jpeg</span><span>"</span>,(i+<span>1</span>)/<span>10.0f</span><span>] atomically:YES];
    }</span>

得到结果:(压缩比0.1~1.0)

技术分享

 

3. MAC API对照片进行JPEG压缩

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

得到结果:压缩比(0.1~1.0)

技术分享

 

4. 通过上面的结果,可以看出,同样的压缩比,压缩出来的照片大小是一样的;

   但是我在比较上面相同大小文件的MD5时发现是不一样的;

   所以理论上MAC和iOS上的JPEG压缩是一致的,但并不是完全一致!

测试程序下载!

 

原文:http://www.cnblogs.com/cocoajin/p/6755430.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐