`
wfkbyni
  • 浏览: 86991 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

压缩图片,如果图片大于100kb,就循环压缩

 
阅读更多
// 压缩图片,如果图片大于100kb,就循环压缩
+ (NSData *)compressionWithImage:(UIImage *)image{
   
    // 先按宽度压缩
    UIImage *newImage = [image resizeImageGreaterThan:480];
   
    NSData *data;
    float quality = 1.0f;
    if (UIImageJPEGRepresentation(newImage, quality)) {
        data = UIImageJPEGRepresentation(newImage, quality);
        while (data.length / 1024.0f > 100 && quality > 0.5) {
            quality -= 0.1f;
            data = UIImageJPEGRepresentation(newImage, quality);
        }
    }
   
    if (data == nil) {
        data = UIImageJPEGRepresentation(newImage, 0.5);
    }
   
    return data;
}


----mark
// 这里是UIImage的一个扩展,按宽度压缩
#import "UIImage+Resize.h"

@implementation UIImage (Resize)

- (UIImage*)resizeImageGreaterThan:(CGFloat)maxL {
    UIImage * res;
    UIImage * img = self;
    res = img;
    float height = img.size.height;
    float width = img.size.width;
    float bigger = height > width ? height : width;
    float coefficient = 1.0;
    int maxPix = maxL;
    if (bigger > maxPix) {
        coefficient = maxPix / bigger;
        res = [img resizeImageWithNewSize:CGSizeMake(width * coefficient, height * coefficient)];
    }
    return res;
}

- (UIImage*)resizeImageWithNewSize:(CGSize)newSize
{
CGFloat newWidth = newSize.width;
CGFloat newHeight = newSize.height;
    // Resize image if needed.
    float width  = self.size.width;
    float height = self.size.height;
    // fail safe
    if (width == 0 || height == 0)
return self;
   
    //float scale;

    if (width != newWidth || height != newHeight) {
        UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
        [self drawInRect:CGRectMake(0, 0, newWidth, newHeight)];

        UIImage *resized = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        //NSData *jpeg = UIImageJPEGRepresentation(image, 0.8);
        return resized;
    }
    return self;
}


@end



#import <UIKit/UIKit.h>

@interface UIImage (Resize)

/*
* brife 缩放图片
* maxL  图片的高度
*/
- (UIImage*)resizeImageGreaterThan:(CGFloat)maxL;
@end
分享到:
评论

相关推荐

    Android中图片压缩方案详解.doc

    while (baos.toByteArray().length / 1024 &gt; 100) { // 循环判断压缩后图片是否超过100KB baos.reset(); image.compress(Bitmap.CompressFormat.JPEG, options, baos); options -= 10; // 每次减少10 } ...

    C#功能代码案例(图片压缩、图片切换、JS一系列的验证)

    总结来说,这些代码片段展示了如何在C#中压缩图片以减少存储占用,如何使用JavaScript实现图片轮播效果,以及如何使用JavaScript进行基本的数据验证。这些技术在实际的Web应用开发中非常常见,能帮助优化用户体验并...

    python实现图像文件等比例压缩

    同时,为了保证循环能够正确结束,循环条件应检查当前图像的大小是否大于10KB。 最后,打印出压缩后的图像大小,以便用户了解压缩效果。整个过程保证了等比例压缩,从而尽量保持图像的质量,同时满足了压缩后的文件...

    安卓图片上传(一)

    while (baos.toByteArray().length / 1024 &gt; 100) { // 循环判断如果压缩后图片是否大于100kb,大于继续压缩 baos.reset(); // 重置baos即清空baos bitmap.compress(Bitmap.CompressFormat.JPEG, 60, baos); // ...

    Android给scrollView截图超过屏幕大小形成长图

    // 循环判断如果压缩后图片是否大于100kb,大于继续压缩 while (baos.toByteArray().length / 1024 &gt; 100) { // 重置baos baos.reset(); // 这里压缩options%,把压缩后的数据存放到baos中 image.compress...

    WinRAR_4.0.exe

    请注意,如果这个命令导致压缩文件中所有文件 全部删除,这个空的压缩文件将被删除。 e 解压文件到当前目录。 f 更新压缩文件中的文件。 更新打包到压缩文件后被改变的文件。这个命令不 向压缩文件中添加新...

    Android微信分享大图遇到的问题的解决方法

    使用了压缩算法,设置了一个最大kb值,并每次循环压缩率递减10%。然而实际运行中发现,无论maxkb设置的多小,还是会出这个问题。仔细调试发现,原图大小为3M多,即使是最小10%的压缩率也过大了。于是将压缩率递减改...

    linux下采用shell脚本实现批量为指定文件夹下图片添加水印的方法

    - `if [ $s -gt 10 ]`: 如果文件大小大于10KB,则继续执行后续命令。 - `convert -quality 80 -resize 600x800 $each $each`: 调整图片大小并压缩质量。 - `composite -gravity southeast -dissolve 80 /水印目录...

    2018年11月浙江省信息技术选考试题修正版.pdf

    - 此VB代码段使用For循环生成6个随机数,并检查奇数位置的数字是否大于其后的数字,如果是,则交换它们。 - 程序的具体执行过程需要对VB语句和逻辑操作有深入理解,无法仅凭给出的部分代码得出完整的运行结果。 ...

    2021-2022计算机二级等级考试试题及答案No.12409.docx

    - **题目**: 由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数目。 - **正确答案**: 错误 - **解析**: 在面向对象编程中,子类继承父类的所有属性和方法(成员)。但是,子类可以选择不添加新的...

    jQuery简单验证上传文件大小及类型的方法

    在这个过程中,如果检测到图片大小超过100MB,则给出警告,否则继续循环直到检测到有效的fileSize属性值,然后显示图片大小。 知识点四:文件上传表单的设计 在前端页面上,为了实现文件的上传功能,通常会使用HTML...

    NOIP2014初赛普及组C--题目及答案.pdf

    JPEG 是一种常用的图片压缩格式。 - B. TXT 是文本文件格式,不是图像格式。 - C. GIF 支持动画和透明度,是一种常见的图像格式。 - D. PNG 提供高质量的图像压缩和透明度支持,是一种常见的图像格式。 - **...

    grub4dos-V0.4.6a-2017-02-04更新

    执行时可以不用输入扩展名,比如输入test如果当前路径下有一个test.g4b就会自动使用。 2013-10-17 1.修改代码支持新版HOTKEY。 2013-07-10 1.insmod现在支持长文件名(以前最多11个字符,现在没有限制). 2....

Global site tag (gtag.js) - Google Analytics