下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:在线学习平台     来源: www.kokojia.com点击数:1131发布时间: 2015-07-06 11:49:42

标签: 编程入门教程ios开发培训编程培训

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

相信学习编程语言的同学,多多少少都对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开发有所帮助。

赞(21)
踩(4)
分享到:
华为认证网络工程师 HCIE直播课视频教程