压缩图片尺寸

转载 2016年06月02日 09:52:11

//
  // UIImage+SuperCompress.m
  // JKCategories (https://github.com/shaojiankui/JKCategories)
  //
  // Created by Jakey on 16/1/22.
  // Copyright © 2016年 Jakey. All rights reserved.
  //
   
  #import "UIImage+JKSuperCompress.h"
   
  @implementation UIImage (JKSuperCompress)
  + (UIImage*)jk_resizableHalfImage:(NSString *)name
  {
  UIImage *normal = [UIImageimageNamed:name];
   
  CGFloat imageW = normal.size.width *0.5;
  CGFloat imageH = normal.size.height *0.5;
  return [normalresizableImageWithCapInsets:UIEdgeInsetsMake(imageH, imageW, imageH, imageW)];
  }
   
   
  + (NSData *)jk_compressImage:(UIImage *)imagetoMaxLength:(NSInteger)maxLengthmaxWidth:(NSInteger)maxWidth{
  NSAssert(maxLength > 0, @"图片的大小必须大于 0");
  NSAssert(maxWidth > 0, @"图片的最大边长必须大于 0");
   
  CGSize newSize = [selfjk_scaleImage:image withLength:maxWidth];
  UIImage *newImage = [selfjk_resizeImage:image withNewSize:newSize];
   
  CGFloat compress = 0.9f;
  NSData *data = UIImageJPEGRepresentation(newImage, compress);
   
  while (data.length > maxLength && compress >0.01) {
  compress -= 0.02f;
   
  data = UIImageJPEGRepresentation(newImage, compress);
  }
  return data;
  }
   
  + (UIImage *)jk_resizeImage:(UIImage *)image withNewSize:(CGSize)newSize{
   
  UIGraphicsBeginImageContext(newSize);
  [image drawInRect:CGRectMake(0,0, newSize.width, newSize.height)];
   
  UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
   
  return newImage;
  }
   
  + (CGSize)jk_scaleImage:(UIImage *)image withLength:(CGFloat)imageLength{
   
  CGFloat newWidth = 0.0f;
  CGFloat newHeight = 0.0f;
  CGFloat width = image.size.width;
  CGFloat height = image.size.height;
   
  if (width > imageLength || height > imageLength){
   
  if (width > height) {
   
  newWidth = imageLength;
  newHeight = newWidth * height / width;
   
  }else if(height > width){
   
  newHeight = imageLength;
  newWidth = newHeight * width / height;
   
  }else{
   
  newWidth = imageLength;
  newHeight = imageLength;
  }
   
  }else{
  return CGSizeMake(width, height);
  }
   
  return CGSizeMake(newWidth, newHeight);
  }
   
  @end
今天在群里面学习了,如何压缩图片,具体的代码如上,希望对各位有用!

相关文章推荐

批量修改图片尺寸

  • 2017年03月31日 11:05
  • 104KB
  • 下载

【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

这篇文章里,我们将一起探讨图像金字塔的一些基本概念,如何使用OpenCV函数 pyrUp 和 pyrDown 对图像进行向上和向下采样,以及了解了专门用于缩放图像尺寸的resize函数的用法。此博文一...
  • zhmxy555
  • zhmxy555
  • 2014年05月18日 18:58
  • 51112

图片尺寸批量修改软件jpegresizer

  • 2011年08月16日 14:47
  • 832KB
  • 下载

OpenCV3.0中的图像金字塔与图片尺寸缩放

图像金字塔是图像中多尺度表达的一种,最主要用于图像分割,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔式一系列以金字塔形状排列的,分辨率逐步降低且来源于同一张原始图的图像集合。其通...

图片尺寸改变软件

  • 2008年04月06日 19:38
  • 3.3MB
  • 下载

MAC 批量图片尺寸修改,创建icon

  • 2016年04月21日 11:33
  • 10.36MB
  • 下载

OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

 目录(?)[-] 一引言二关于图像金字塔 高斯金字塔 对图像的向下取样 拉普拉斯金字塔 三resize 函数剖析四pyrUp函数剖析五pyrDown函数剖析六综合示例篇在...

BCB 计算图片尺寸

  • 2014年01月12日 13:23
  • 742KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:压缩图片尺寸
举报原因:
原因补充:

(最多只允许输入30个字)