美文网首页Apple DeveloperiOS Developer
iOS上传图片到服务器视角问题

iOS上传图片到服务器视角问题

作者: DoubleLine | 来源:发表于2016-12-19 09:33 被阅读55次

    我们把图片上传到服务器的时候,有时候会出现视角错误的问题,这时候我们就需要在进行图片上传的时候把图片就是处理(这种情况一般在纯)

    第一步:新建一个继承于NSObject的类judgeImage

    第二部:在judgeImage.h头文件中写入下方法

    +(UIImage *)fixOrientation:(UIImage *)aImage;

    第三部:在judgeImage.m把头文件的方法实现

    //这里用到的方法是判断图片头部的朝向,然后对图片进行旋转,其实也没有必要完全弄懂

    +(UIImage *)fixOrientation:(UIImage *)aImage {

    if (aImage.imageOrientation == UIImageOrientationUp)

    return aImage;

    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;

    }

    // 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:

    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;

    }

    // 绘制新的image返回

    CGImageRef cgimg = CGBitmapContextCreateImage(ctx);

    UIImage *img = [UIImage imageWithCGImage:cgimg];

    CGContextRelease(ctx);

    CGImageRelease(cgimg);

    return omg;//处理之后的图片

    }

    第四部:最关键的一步——如何使用

    UIImage*judeh=[judgeImage fixOrientation:myimage];

    这里有写好的类,不想写可以直接拿来用

    相关文章

      网友评论

        本文标题:iOS上传图片到服务器视角问题

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