zoukankan      html  css  js  c++  java
  • 图片处理

    1、将图片方向旋转为up方向

    -(UIImage *)rotateImage:(UIImage *)aImage
    {
        
        CGImageRef imgRef = aImage.CGImage;
        CGFloat width = CGImageGetWidth(imgRef);
        CGFloat height = CGImageGetHeight(imgRef);
        
        CGAffineTransform transform = CGAffineTransformIdentity;
        CGRect bounds = CGRectMake(0, 0, width, height);
        CGFloat scaleRatio = 1;
        CGFloat boundHeight;
        
        UIImageOrientation orient = aImage.imageOrientation;
        
        switch(orient){
            case UIImageOrientationUp: //EXIF = 1
                transform = CGAffineTransformIdentity;
                break;
                
            case UIImageOrientationUpMirrored: //EXIF = 2
                transform = CGAffineTransformMakeTranslation(width, 0.0);
                transform = CGAffineTransformScale(transform, -1.0, 1.0);
                break;
                
            case UIImageOrientationDown: //EXIF = 3
                transform = CGAffineTransformMakeTranslation(width, height);
                transform = CGAffineTransformRotate(transform, M_PI);
                break;
                
            case UIImageOrientationDownMirrored: //EXIF = 4
                transform = CGAffineTransformMakeTranslation(0.0, height);
                transform = CGAffineTransformScale(transform, 1.0, -1.0);
                break;
                
            case UIImageOrientationLeftMirrored: //EXIF = 5
                boundHeight = bounds.size.height;
                bounds.size.height = bounds.size.width;
                bounds.size.width = boundHeight;
                transform = CGAffineTransformMakeTranslation(height, width);
                transform = CGAffineTransformScale(transform, -1.0, 1.0);
                transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
                break;
                
            case UIImageOrientationLeft: //EXIF = 6
                boundHeight = bounds.size.height;
                bounds.size.height = bounds.size.width;
                bounds.size.width = boundHeight;
                transform = CGAffineTransformMakeTranslation(0.0, width);
                transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
                break;
                
            case UIImageOrientationRightMirrored: //EXIF = 7
                boundHeight = bounds.size.height;
                bounds.size.height = bounds.size.width;
                bounds.size.width = boundHeight;
                transform = CGAffineTransformMakeScale(-1.0, 1.0);
                transform = CGAffineTransformRotate(transform, M_PI / 2.0);
                break;
                
            case UIImageOrientationRight: //EXIF = 8
                boundHeight = bounds.size.height;
                bounds.size.height = bounds.size.width;
                bounds.size.width = boundHeight;
                transform = CGAffineTransformMakeTranslation(height, 0.0);
                transform = CGAffineTransformRotate(transform, M_PI / 2.0);
                break;
                
            default:
                
                [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"];
        }
        UIGraphicsBeginImageContext(bounds.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        
        if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) {
            CGContextScaleCTM(context, -scaleRatio, scaleRatio);
            CGContextTranslateCTM(context, -height, 0);
        }
        else {
            CGContextScaleCTM(context, scaleRatio, -scaleRatio);
            CGContextTranslateCTM(context, 0, -height);
        }
        
        CGContextConcatCTM(context, transform);
        CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
        UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        
        return imageCopy;
    }

    2、图片缩略图

    - (UIImage *) thumbnailImageForImage:(UIImage *) image {
        CGSize origImageSize = image.size;
        
        CGRect newRect = CGRectMake(0, 0, 270, 233);
        float ratio = MAX(newRect.size.width / origImageSize.width, newRect.size.height/origImageSize.height);
        
        UIGraphicsBeginImageContext(newRect.size);
        CGRect projectRect;
        projectRect.size.width = ratio * origImageSize.width;
        projectRect.size.height = ratio * origImageSize.height;
        projectRect.origin.x = (newRect.size.width - projectRect.size.width) * 0.5;
        projectRect.origin.y = (newRect.size.height - projectRect.size.height) * 0.5;
        
        [image drawInRect:projectRect];
        
        UIImage * small = UIGraphicsGetImageFromCurrentImageContext();
        return small;
    }
  • 相关阅读:
    最近邻插值
    tp类型自动转换和自动完成
    tp读取器和写入器
    tp模型和数据库操作方法
    tp数据库操作
    tp请求和响应
    tp配置+路由+基本操作
    git的常见操作方法
    php 检查该数组有重复值
    公众号的TOKEN配置PHP代码
  • 原文地址:https://www.cnblogs.com/benbenzhu/p/3919413.html
Copyright © 2011-2022 走看看