美文网首页
iOS 照片上传服务器旋转90度解决办法

iOS 照片上传服务器旋转90度解决办法

作者: 码省理工0 | 来源:发表于2016-12-22 23:52 被阅读364次

最近在处理移动端选择图片实时预览并上传时遇到一个问题:上传前图片预览正常,但上传到服务器上的图片展示到页面上时,有时会出现图片翻转的问题,一般是翻转 90 度。后经一翻研究找到了问题所在,特在此记录一下。
发现:如果选取的图片是在横屏状态下拍摄的,则上传后不会出现图片翻转的问题;反之,如果是在竖屏状态下拍摄的,上传后就会出现图片翻转的问题。

@interface UIImage (fixOrientation)
- (UIImage *)fixOrientation;
@end


  @implementation UIImage (fixOrientation)
- (UIImage *)fixOrientation:(UIImage *)aImage {  
// No-op if the orientation is already correct  
if (aImage.imageOrientation == UIImageOrientationUp)   
    return aImage;  
// We need to calculate the proper transformation to make the image upright.  
// We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.  
CGAffineTransform transform = CGAffineTransformIdentity;  
switch (aImage.imageOrientation) {  
    case UIImageOrientationDown:  
    case UIImageOrientationDownMirrored:  
        transform = CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);  
        transform = CGAffineTransformRotate(transform, M_PI);  
        break;  
    case UIImageOrientationLeft:  
    case UIImageOrientationLeftMirrored:  
        transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);  
        transform = CGAffineTransformRotate(transform, M_PI_2);  
        break;     
    case UIImageOrientationRight:  
    case UIImageOrientationRightMirrored:  
        transform = CGAffineTransformTranslate(transform, 0, aImage.size.height);  
        transform = CGAffineTransformRotate(transform, -M_PI_2);  
        break;  
    default:  
        break;  
}  
switch (aImage.imageOrientation) {  
    case UIImageOrientationUpMirrored:  
    case UIImageOrientationDownMirrored:  
        transform = CGAffineTransformTranslate(transform, aImage.size.width, 0);  
        transform = CGAffineTransformScale(transform, -1, 1);  
        break;          
    case UIImageOrientationLeftMirrored:  
    case UIImageOrientationRightMirrored:  
        transform = CGAffineTransformTranslate(transform, aImage.size.height, 0);  
        transform = CGAffineTransformScale(transform, -1, 1);  
        break;  
    default:  
        break;  
}  
// Now we draw the underlying CGImage into a new context, applying the transform  
// calculated above.  
CGContextRef ctx = CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height,  
                                         CGImageGetBitsPerComponent(aImage.CGImage), 0,  
                                         CGImageGetColorSpace(aImage.CGImage),  
                                         CGImageGetBitmapInfo(aImage.CGImage));  
CGContextConcatCTM(ctx, transform);  
switch (aImage.imageOrientation) {  
    case UIImageOrientationLeft:  
    case UIImageOrientationLeftMirrored:  
    case UIImageOrientationRight:  
    case UIImageOrientationRightMirrored:  
        // Grr...  
        CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage);  
        break;    
    default:  
        CGContextDrawImage(ctx, CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage);  
        break;  
} 
// And now we just create a new UIImage from the drawing context  
CGImageRef cgimg = CGBitmapContextCreateImage(ctx);  
UIImage *img = [UIImage imageWithCGImage:cgimg];  
CGContextRelease(ctx);  
CGImageRelease(cgimg);  
return img;  } 

相关文章

  • iOS 照片上传服务器旋转90度解决办法

    最近在处理移动端选择图片实时预览并上传时遇到一个问题:上传前图片预览正常,但上传到服务器上的图片展示到页面上时,有...

  • iOS上传图片后台旋转展示问题

    iOS上传图片后台旋转展示问题 在一次上传图片到服务器后,去后台页面查看,发现iOS显示的图片总是旋转90℃的,而...

  • ios手机上传竖拍照片旋转90度问题

    利用exif.js插件解决ios手机上传竖拍照片旋转90度问题 问题描述:移动端手机照片上传时,发现手机上传竖拍图...

  • iOS图片旋转问题

    iOS图片旋转问题 在iOS开发中经常会遇到图片旋转的问题,比如:有时候上传到服务器中的图片方向与iPhone中图...

  • Ios与安卓的兼容性 问题

    Ios拍照上传给服务端图片进行了旋转解决办法:前端上传后转成Base64后发现图是没有被旋转的,只有传给服务端就旋...

  • 图片旋转

    IOS上传照片会旋转一定的角度,所以有时候需要把图片给旋转。具体实现如下: public String rotat...

  • RNFetchBlob.fetchBlobForm failed

    在iOS上,选取照片或者拍摄照片后,然后想通过RNFetchBlob上传服务器,发现报错了RNFetchBlob....

  • 图片方向问题

    UIImagePickerController返回的照片带有方向信息,如果直接上传到服务器的话,可能造成旋转了90...

  • 拍照方向问题

    UIImagePickerController返回的照片带有方向信息,如果直接上传到服务器的话,可能造成旋转了90...

  • 【iOS】处理照片方向不正确的问题

    假如的你照片上传到服务器后,在服务器端查看发现,逆时针旋转了90。可能是因为没有处理 imageOrientati...

网友评论

      本文标题:iOS 照片上传服务器旋转90度解决办法

      本文链接:https://www.haomeiwen.com/subject/genfvttx.html