将
      
       
        iPhone 6s
       
       
        拍摄
       
      
      的照片上传到服务器之后,
     
    
     
      在
      
       
        
         Web网页
        
       
      
      上看到图片被
      
       
        
         逆时针旋转了90度
        
       
      
      ,
      
     
    
     
      这让我很惆怅呐!
     
    
     
     
    
     
      出现这个问题其实是因为上传的图片为
      
       
        .jpg
       
      
      格式,
      
       
        .jpg
       
       文件含有EXIF信息
      
      ,
     
    
     
      其中EXIF信息中有个参数
      
       
        Orientation
       
      
      可以表明图片的显示方向。
     
    
     
      经过一段时间的Debug,我发现我上传的图片里的EXIF中的
      
       Orientation
      
      参数的值为
      
       6
      
      ,
     
    
     
      我所期望的其实是1,这里是6,所以图片发生了旋转。
     
    
     
      
     
    
     
      那么,如何解决这个问题呢?
     
    
     
      重新设置这个
      
       
        Orientation
       
      
      值吗?我这么懒,当然不想啦!
     
    
     
      幸好,
      
       
        .png格式的图片并不包含EXIF信息
       
      
      !
     
    
     
      如果你确实想修改EXIF信息,后文我也顺便附上了修改教程的链接。
     
    
     
     
    
     
     
    
     
      所以我可以将
      
       UIImage
      
      通过
      
       
        UIImagePNGRepresentation
       
       转换成
       
        .png
       
       格式文件的
       
        Data
       
       ,
      
     
    
     
      然后上传即可,
     
     
      而且
      
       服务端并没有规定我必须传.jpg格式的图片
      
      !
     
    
     
     
    
     
     
    
     
     
    
     
      然而,我发现这样上传的图片的
      
       文件大小很大
      
      诶!
     
    
     
      有多大呢?
     
    
     
      
       至少
       
        
         比
        
       
      
      
       
        
         UIImageJPEGRepresentation
        
       
       
        
         
          (image, 1.0
         
        
        
         
          
           
            )生成的要大很多
           
          
          !
         
        
       
      
     
    
     
      那么,如何
      
       解决这个文件大小问题
      
      并且
      
       还要去除EXIF信息
      
      呢?
     
    
     
     
    
     
      我想你也应该猜到我的做法了,哈哈!
     
    
     
      1.将
      
       UIImage
      
      通过
      
       
        UIImage
        
         PNG
        
        Representation
       
       转换成
       
        .png
       
       格式文件的
       
        Data
       
       ,这一步
       
        去除EXIF信息
       
       ;
      
     
    
     
      2.用生成的
      
       Data
       
        去
       
      
      生成新的
      
       UIImage
      
      (newImage),这一步为
      
       压缩文件大小
      
      做准备;
     
    
     
      3.通过
      
       UIImage
       
        JPEG
       
       Representation
      
      
       (newImage, 0.6
       
        
         )得到没有EXIF并且文件大小达标的Image的Data。
        
       
      
     
    
     
      
       
        
         
          
           Okay,上传吧!
          
         
        
       
      
     
    
参考资料:
     
      http://www.cocoachina.com/ios/20150605/12021.html
     
    
     
      http://www.cnblogs.com/robinkey/archive/2013/01/21/2869930.html
     
    
     
      http://www.onesl.com/web/ylsh/2016120802.html
     
    
     
      http://www.bcty365.com/content-142-3055-1.html
     
    
     
      http://blog.csdn.net/mouxiaoxiong/article/details/52922116
     
    
     
      
       
        
         Ficow原创,转载请注明出处:
         
          
           http://www.cnblogs.com/ficow/p/7307376.html
          
         
        
       
      
     
    
转载于:https://www.cnblogs.com/ficow/p/7307376.html
 
