html5中文学习网

您的位置: 首页 > ios » 正文

ios中图像进行压缩方法汇总_IOS开发

[ ] 已经帮助:人解决问题

   在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.LsCHTML5中文学习网 - HTML5先行者学习网

  方法一:LsCHTML5中文学习网 - HTML5先行者学习网

  代码如下:LsCHTML5中文学习网 - HTML5先行者学习网

  - (UIImage*)scaleFromImage:(UIImage*)image scaledToSize:(CGSize)newSizeLsCHTML5中文学习网 - HTML5先行者学习网

  {LsCHTML5中文学习网 - HTML5先行者学习网

  CGSize imageSize = image.size;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat width = imageSize.width;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat height = imageSize.height;LsCHTML5中文学习网 - HTML5先行者学习网

  if (width <= newSize.width && height <= newSize.height){LsCHTML5中文学习网 - HTML5先行者学习网

  return image;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  if (width == 0 || height == 0){LsCHTML5中文学习网 - HTML5先行者学习网

  return image;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat widthFactor = newSize.width / width;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat heightFactor = newSize.height / height;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat scaleFactor = (widthFactorLsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat scaledWidth = width * scaleFactor;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat scaledHeight = height * scaleFactor;LsCHTML5中文学习网 - HTML5先行者学习网

  CGSize targetSize = CGSizeMake(scaledWidth,scaledHeight);LsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsBeginImageContext(targetSize);LsCHTML5中文学习网 - HTML5先行者学习网

  [image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];LsCHTML5中文学习网 - HTML5先行者学习网

  UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsEndImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  return newImage;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  方法二:LsCHTML5中文学习网 - HTML5先行者学习网

  .h具体codeLsCHTML5中文学习网 - HTML5先行者学习网

   代码如下:LsCHTML5中文学习网 - HTML5先行者学习网

  #import LsCHTML5中文学习网 - HTML5先行者学习网

  @interface UIImage (UIImageExt)LsCHTML5中文学习网 - HTML5先行者学习网

  - (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size;LsCHTML5中文学习网 - HTML5先行者学习网

  - (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize;LsCHTML5中文学习网 - HTML5先行者学习网

  @endLsCHTML5中文学习网 - HTML5先行者学习网

  .m具体codeLsCHTML5中文学习网 - HTML5先行者学习网

   代码如下:LsCHTML5中文学习网 - HTML5先行者学习网

  #import "UIImageExt.h"LsCHTML5中文学习网 - HTML5先行者学习网

  @implementation UIImage (UIImageExt)LsCHTML5中文学习网 - HTML5先行者学习网

  - (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{LsCHTML5中文学习网 - HTML5先行者学习网

  // 创建一个bitmap的contextLsCHTML5中文学习网 - HTML5先行者学习网

  // 并把它设置成为当前正在使用的contextLsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsBeginImageContext(size);LsCHTML5中文学习网 - HTML5先行者学习网

  // 绘制改变大小的图片LsCHTML5中文学习网 - HTML5先行者学习网

  [img drawInRect:CGRectMake(0, 0, size.width, size.height)];LsCHTML5中文学习网 - HTML5先行者学习网

  // 从当前context中创建一个改变大小后的图片LsCHTML5中文学习网 - HTML5先行者学习网

  UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  // 使当前的context出堆栈LsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsEndImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  // 返回新的改变大小后的图片LsCHTML5中文学习网 - HTML5先行者学习网

  return scaledImage;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  - (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSizeLsCHTML5中文学习网 - HTML5先行者学习网

  {LsCHTML5中文学习网 - HTML5先行者学习网

  UIImage *sourceImage = self;LsCHTML5中文学习网 - HTML5先行者学习网

  UIImage *newImage = nil;LsCHTML5中文学习网 - HTML5先行者学习网

  CGSize imageSize = sourceImage.size;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat width = imageSize.width;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat height = imageSize.height;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat targetWidth = targetSize.width;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat targetHeight = targetSize.height;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat scaleFactor = 0.0;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat scaledWidth = targetWidth;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat scaledHeight = targetHeight;LsCHTML5中文学习网 - HTML5先行者学习网

  CGPoint thumbnailPoint = CGPointMake(0.0,0.0);LsCHTML5中文学习网 - HTML5先行者学习网

  if (CGSizeEqualToSize(imageSize, targetSize) == NO)LsCHTML5中文学习网 - HTML5先行者学习网

  {LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat widthFactor = targetWidth / width;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat heightFactor = targetHeight / height;LsCHTML5中文学习网 - HTML5先行者学习网

  if (widthFactor > heightFactor)LsCHTML5中文学习网 - HTML5先行者学习网

  scaleFactor = widthFactor; // scale to fit heightLsCHTML5中文学习网 - HTML5先行者学习网

  elseLsCHTML5中文学习网 - HTML5先行者学习网

  scaleFactor = heightFactor; // scale to fit widthLsCHTML5中文学习网 - HTML5先行者学习网

  scaledWidth = width * scaleFactor;LsCHTML5中文学习网 - HTML5先行者学习网

  scaledHeight = height * scaleFactor;LsCHTML5中文学习网 - HTML5先行者学习网

  // center the imageLsCHTML5中文学习网 - HTML5先行者学习网

  if (widthFactor > heightFactor)LsCHTML5中文学习网 - HTML5先行者学习网

  {LsCHTML5中文学习网 - HTML5先行者学习网

  thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  elseLsCHTML5中文学习网 - HTML5先行者学习网

  if (widthFactor < heightFactor)LsCHTML5中文学习网 - HTML5先行者学习网

  {LsCHTML5中文学习网 - HTML5先行者学习网

  thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsBeginImageContext(targetSize); // this will cropLsCHTML5中文学习网 - HTML5先行者学习网

  CGRect thumbnailRect = CGRectZero;LsCHTML5中文学习网 - HTML5先行者学习网

  thumbnailRect.origin = thumbnailPoint;LsCHTML5中文学习网 - HTML5先行者学习网

  thumbnailRect.size.width = scaledWidth;LsCHTML5中文学习网 - HTML5先行者学习网

  thumbnailRect.size.height = scaledHeight;LsCHTML5中文学习网 - HTML5先行者学习网

  [sourceImage drawInRect:thumbnailRect];LsCHTML5中文学习网 - HTML5先行者学习网

  newImage = UIGraphicsGetImageFromCurrentImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  if(newImage == nil)LsCHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"could not scale image");LsCHTML5中文学习网 - HTML5先行者学习网

  //pop the context to get back to the defaultLsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsEndImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  return newImage;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  @endLsCHTML5中文学习网 - HTML5先行者学习网

  方法三:(本人项目中使用的方法)LsCHTML5中文学习网 - HTML5先行者学习网

   代码如下:LsCHTML5中文学习网 - HTML5先行者学习网

  -(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidthLsCHTML5中文学习网 - HTML5先行者学习网

  {LsCHTML5中文学习网 - HTML5先行者学习网

  CGSize imageSize = sourceImage.size;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat width = imageSize.width;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat height = imageSize.height;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat targetWidth = defineWidth;LsCHTML5中文学习网 - HTML5先行者学习网

  CGFloat targetHeight = (targetWidth / width) * height;LsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsBeginImageContext(CGSizeMake(targetWidth, targetHeight));LsCHTML5中文学习网 - HTML5先行者学习网

  [sourceImage drawInRect:CGRectMake(0,0,targetWidth, targetHeight)];LsCHTML5中文学习网 - HTML5先行者学习网

  UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  UIGraphicsEndImageContext();LsCHTML5中文学习网 - HTML5先行者学习网

  return newImage;LsCHTML5中文学习网 - HTML5先行者学习网

  }LsCHTML5中文学习网 - HTML5先行者学习网

  以上所述就是本文的全部内容了,希望大家能够喜欢。LsCHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助