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

    + (NSData *)resetSizeOfImageData:(UIImage *)source_image maxSize:(NSInteger)maxSize
    {
        //先调整分辨率
        CGSize newSize = CGSizeMake(source_image.size.width, source_image.size.height);
        
        CGFloat tempHeight = newSize.height / 1024;
        CGFloat tempWidth = newSize.width / 1024;
        
        if (tempWidth > 1.0 && tempWidth > tempHeight) {
            newSize = CGSizeMake(source_image.size.width / tempWidth, source_image.size.height / tempWidth);
        }
        else if (tempHeight > 1.0 && tempWidth < tempHeight){
            newSize = CGSizeMake(source_image.size.width / tempHeight, source_image.size.height / tempHeight);
        }
        
        UIGraphicsBeginImageContext(newSize);
        [source_image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        
        //调整大小
        NSData * imageData = UIImageJPEGRepresentation(newImage,1.0);
        NSUInteger sizeOrigin = [imageData length];
        NSUInteger sizeOriginKB = sizeOrigin / 1024;
        
        if (sizeOriginKB > maxSize) {
            
            NSUInteger testKB = sizeOriginKB;
            UIImage * testIamge = newImage;
            
            if (testKB > 4000) {
                imageData = UIImageJPEGRepresentation(newImage,0.10);
                testKB = [imageData length] / 1024;
                testIamge = [UIImage imageWithData:imageData];
            }
            if (testKB > 3000) {
                imageData = UIImageJPEGRepresentation(testIamge,0.20);
                testKB = [imageData length] / 1024;
                testIamge = [UIImage imageWithData:imageData];
            }
            if (testKB > 2000) {
                imageData = UIImageJPEGRepresentation(testIamge,0.30);
                testKB = [imageData length] / 1024;
                testIamge = [UIImage imageWithData:imageData];
            }
            if (testKB > 1000) {
                imageData = UIImageJPEGRepresentation(testIamge,0.40);
                testKB = [imageData length] / 1024;
                testIamge = [UIImage imageWithData:imageData];
            }
            if (testKB > 500) {
                imageData = UIImageJPEGRepresentation(testIamge,0.50);
                testKB = [imageData length] / 1024;
                testIamge = [UIImage imageWithData:imageData];
            }
            if (testKB > 300) {
                imageData = UIImageJPEGRepresentation(testIamge,0.50);
                testKB = [imageData length] / 1024;
                testIamge = [UIImage imageWithData:imageData];
            }
            if (testKB > maxSize) {
                imageData = UIImageJPEGRepresentation(testIamge,0.30);
                testKB = [imageData length] / 1024;
                testIamge = [UIImage imageWithData:imageData];
            }
            return imageData;
        }
        
        return imageData;
    }
  • 相关阅读:
    nodejs 文件拷贝
    MySQL linux二进制安装
    【Android工具类】验证码倒计时帮助类CountDownButtonHelper的实现
    JAVA一些基础概念
    程序猿生存定律-公司选择上的方法论
    Leetcode 第 2 题(Add Two Numbers)
    SpringMVC学习记录(五)--表单标签
    算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS
    CentOS 7 virt-manager 无法连接本地的hypervisor
    Android自己定义View画图实现拖影动画
  • 原文地址:https://www.cnblogs.com/dlwj/p/5896574.html
Copyright © 2011-2022 走看看