编程入门教程:在ios系统中对图像进行压缩的办法

    作者:在线学习平台更新于: 2015-07-06 11:49:42

    大神带你学编程,欢迎选课

    相信学习编程语言的同学,多多少少都对IOS开发培训学习比较感兴趣,毕竟现在市场上IOS和安卓的市场占有率是比较高的,学好IOS开发的话,对找工作是有莫大的帮助的,下面就为大家带来一个编程入门教程是关于在ios系统中对图像进行压缩的办法的介绍,更多内容可以登录课课家网络学习平台了解详情。
    在ios系统中对图像进行压缩的办法
    好了,废话不多说,直接进入正题:在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.
      方法一:(为大家列出相关代码)
      代码如下:
      - (UIImage*)scaleFromImage:(UIImage*)image scaledToSize:(CGSize)newSize
      {
      CGSize imageSize = image.size;
      CGFloat width = imageSize.width;
      CGFloat height = imageSize.height;
      if (width <= newSize.width && height <= newSize.height){
      return image;
      }
      if (width == 0 || height == 0){
      return image;
      }
      CGFloat widthFactor = newSize.width / width;
      CGFloat heightFactor = newSize.height / height;
      CGFloat scaleFactor = (widthFactor
      CGFloat scaledWidth = width * scaleFactor;
      CGFloat scaledHeight = height * scaleFactor;
      CGSize targetSize = CGSizeMake(scaledWidth,scaledHeight);
      UIGraphicsBeginImageContext(targetSize);
      [image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];
      UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();
      return newImage;
      }
      方法二:(为大家列出相关代码)
      .h具体code
       代码如下:
      #import
      @interface UIImage (UIImageExt)
      - (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size;
      - (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize;
      @end
      .m具体code
       代码如下:
      #import "UIImageExt.h"
      @implementation UIImage (UIImageExt)
      - (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{
      // 创建一个bitmap的context
      // 并把它设置成为当前正在使用的context
      UIGraphicsBeginImageContext(size);
      // 绘制改变大小的图片
      [img drawInRect:CGRectMake(0, 0, size.width, size.height)];
      // 从当前context中创建一个改变大小后的图片
      UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
      // 使当前的context出堆栈
      UIGraphicsEndImageContext();
      // 返回新的改变大小后的图片
      return scaledImage;
      }
      - (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize
      {
      UIImage *sourceImage = self;
      UIImage *newImage = nil;
      CGSize imageSize = sourceImage.size;
      CGFloat width = imageSize.width;
      CGFloat height = imageSize.height;
      CGFloat targetWidth = targetSize.width;
      CGFloat targetHeight = targetSize.height;
      CGFloat scaleFactor = 0.0;
      CGFloat scaledWidth = targetWidth;
      CGFloat scaledHeight = targetHeight;
      CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
      if (CGSizeEqualToSize(imageSize, targetSize) == NO)
      {
      CGFloat widthFactor = targetWidth / width;
      CGFloat heightFactor = targetHeight / height;
      if (widthFactor > heightFactor)
      scaleFactor = widthFactor; // scale to fit height
      else
      scaleFactor = heightFactor; // scale to fit width
      scaledWidth = width * scaleFactor;
      scaledHeight = height * scaleFactor;
      // center the image
      if (widthFactor > heightFactor)
      {
      thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
      }
      else
      if (widthFactor < heightFactor)
      {
      thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
      }
      }
      UIGraphicsBeginImageContext(targetSize); // this will crop
      CGRect thumbnailRect = CGRectZero;
      thumbnailRect.origin = thumbnailPoint;
      thumbnailRect.size.width = scaledWidth;
      thumbnailRect.size.height = scaledHeight;
      [sourceImage drawInRect:thumbnailRect];
      newImage = UIGraphicsGetImageFromCurrentImageContext();
      if(newImage == nil)
      NSLog(@"could not scale image");
      //pop the context to get back to the default
      UIGraphicsEndImageContext();
      return newImage;
      }
      @end
      方法三:(本人项目中使用的方法)
       代码如下:
      -(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth
      {
      CGSize imageSize = sourceImage.size;
      CGFloat width = imageSize.width;
      CGFloat height = imageSize.height;
      CGFloat targetWidth = defineWidth;
      CGFloat targetHeight = (targetWidth / width) * height;
      UIGraphicsBeginImageContext(CGSizeMake(targetWidth, targetHeight));
      [sourceImage drawInRect:CGRectMake(0,0,targetWidth, targetHeight)];
      UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();
      return newImage;
      }
      好了,以上所述就是本次编程培训学习的在ios系统中对图像进行压缩的办法的介绍,学习方法不是唯一,思维是关键,希望大家可以在学习过程中不断探索,创造一种属于自己的思维方式和学习方式,推荐给大家一个编程进阶课程:iOS开发培训-网络提升篇,希望对大家学习IOS开发有所帮助。

课课家教育

未登录

1