关闭

[置顶] 图片压缩到指定大小范围内KB、MB

标签: 图片压缩
3925人阅读 评论(0) 收藏 举报
分类:
- (void)viewDidLoad {

    [superviewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIImageView *imgView = [[UIImageViewalloc]initWithFrame:CGRectMake(10,30, 300,415)];
    imgView.backgroundColor = [UIColoryellowColor];
    imgView.image = [UIImageimageNamed:@"1.jpg"];
    [self.viewaddSubview:imgView];
    //图像压缩
    UIImage *image = [selfscaleFromImage:imgView.image];
    //保存图像
    NSString *strFileName = [selfsaveImage:image];
    imgView.image = image;
    NSLog(@"图片保存路径:%@",strFileName);
}

//==========================
// 图像压缩
//==========================
- (UIImage *)scaleFromImage:(UIImage *)image
{
    if (!image)
    {
        returnnil;
    }
    NSData *data =UIImagePNGRepresentation(image);
    CGFloat dataSize = data.length/1024;
    CGFloat width  = image.size.width;
    CGFloat height = image.size.height;
    CGSize size;

    if (dataSize<=50)//小于50k
    {
        return image;
    }
    elseif (dataSize<=100)//小于100k
    {
        size = CGSizeMake(width/1.f, height/1.f);
    }
    elseif (dataSize<=200)//小于200k
    {
        size = CGSizeMake(width/2.f, height/2.f);
    }
    elseif (dataSize<=500)//小于500k
    {
        size = CGSizeMake(width/2.f, height/2.f);
    }
    elseif (dataSize<=1000)//小于1M
    {
        size = CGSizeMake(width/2.f, height/2.f);
    }
    elseif (dataSize<=2000)//小于2M
    {
        size = CGSizeMake(width/2.f, height/2.f);
    }
    else//大于2M
    {
        size = CGSizeMake(width/2.f, height/2.f);
    }
    NSLog(@"%f,%f",size.width,size.height);
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0,0, size.width, size.height)];
    UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    if (!newImage)
    {
        return image;
    }
    return newImage;
}

//===============
// 保存图像
//===============
- (NSString *)saveImage:(UIImage*)image
{
    NSData *data;
    if (UIImagePNGRepresentation(image) ==nil)
    {
        data = UIImageJPEGRepresentation(image, 1.0);
    }
    else
    {
        data = UIImagePNGRepresentation(image);
    }
    
    //图片保存的路径
    //这里将图片放在沙盒的documents文件夹中
    NSString * DocumentsPath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents"];
    //文件管理器
    NSFileManager *fileManager = [NSFileManagerdefaultManager];
    //把刚刚图片转换的data对象拷贝至沙盒中并保存为image.png
    [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YESattributes:nilerror:nil];
    [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@"/image.png"]contents:data attributes:nil];

    //得到选择后沙盒中图片的完整路径
    NSString *filePath = [[NSStringalloc]initWithFormat:@"%@%@",DocumentsPath, @"/image.png"];
    return filePath;
}


8
0
查看评论

iOS中图片压缩成指定的大小

iOS中,我们为了节省内存,需要对图片来进行处理,来优化程序,提高程序的效率,下面是一个根据自己的要求来重新设置图片的大小: 一、压缩图片有两种方式,第一种是压缩图片的大小,重新生成图片的尺寸:如下 /** * 压缩图片到指定尺寸大小 * * @param image 原始图片 * ...
  • dkq972958298
  • dkq972958298
  • 2016-10-07 17:38
  • 11321

IOS 压缩图片到指定大小kb

.h#import <UIKit/UIKit.h>@interface UIImage (WLTScaleImage) +(UIImage *)scaleImage:(UIImage *)image toKb:(NSInteger)kb;@end.m#import "UIIma...
  • u012603758
  • u012603758
  • 2016-10-11 13:24
  • 5049

IOS图片压缩上传服务器终极解决方案

我最终才去的方案如下: /** * 动态发布图片压缩 * * @param source_image 原图image * @param maxSize 限定的图片大小 * * @return 返回处理后的图片 */ - (NSData *)resetSizeOfIm...
  • a416863220
  • a416863220
  • 2015-07-10 09:11
  • 2875

IOS获取相册照片的大小

ALAssetsLibrary *alLibrary = [[ALAssetsLibrary alloc] init];         __block float fileMB  = 0.0;      &...
  • baohanqing
  • baohanqing
  • 2017-08-30 21:37
  • 374

iOS开发如何将文件size转成KB、MB、GB

iOS开发如何将文件size转成KB、MB、GB
  • qq_33777090
  • qq_33777090
  • 2016-06-12 15:27
  • 768

图片压缩的两种形式(压缩到指定尺寸和压缩到指定大小)

转自:http://blog.csdn.net/dkq972958298/article/details/52750741 iOS中,我们为了节省内存,需要对图片来进行处理,来优化程序,提高程序的效率,下面是一个根据自己的要求来重新设置图片的大小: 一、压缩图片有两种方式,第...
  • zhanglizhi111
  • zhanglizhi111
  • 2017-03-07 11:29
  • 204

对图片进行压缩

对图片进行二次采样的时候计算压缩之后的尺寸/** * 官方计算代码 * 根据用户所给出的宽度和高度计算出来压缩比例 * @param options * @param reqWidth * @param reqHeight * @retur...
  • blueZhangFun
  • blueZhangFun
  • 2015-12-25 13:32
  • 677

图片处理—图片压缩

这几天 在做图片上传的时候,
  • u011597585
  • u011597585
  • 2014-05-05 22:59
  • 486

B转换KB,MB,GB的方法

public static String formetFileSize(long fileS) { DecimalFormat df = new DecimalFormat("#.0"); String fileSizeString = ""; ...
  • qq_24082497
  • qq_24082497
  • 2016-05-15 17:16
  • 1397

python 文件大小显示kb、mb或gb等

SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],   ...
  • u013419465
  • u013419465
  • 2014-10-29 10:55
  • 1818
    个人资料
    • 访问:380497次
    • 积分:9120
    • 等级:
    • 排名:第2438名
    • 原创:334篇
    • 转载:241篇
    • 译文:0篇
    • 评论:50条
    最新评论
    苹果官方文档