手机
当前位置:查字典教程网 >编程开发 >IOS开发 >ios中图像进行压缩方法汇总
ios中图像进行压缩方法汇总
摘要:在Iphone上有两种读取图片数据的简单方法:UIImageJPEGRepresentation和UIImagePNGRepresentat...

在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中图像进行压缩方法汇总】相关文章:

CoCoa编程中视图控制器与视图类介绍

iphone的safari浏览器中实现全屏浏览的方法

IOS读取文件类和常用方法

浅析iOS给图片加水印的方法

iOS开发中CAlayer层的属性以及自定义层的方法

ajax 三种实现方法实例代码

ios下移动文件方法汇总

iOS开发中对文件目录的访问及管理的基本方法小结

深入解析iOS应用开发中九宫格视图布局的相关计算方法

IOS中html5上传图片方向问题解决方法

精品推荐
分类导航