手机
当前位置:查字典教程网 >编程开发 >IOS开发 >ios中图像进行压缩方法汇总
ios中图像进行压缩方法汇总
摘要:方法一:复制代码代码如下:-(UIImage*)scaleFromImage:(UIImage*)imagescaledToSize:(CG...

方法一:

复制代码 代码如下:

- (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<heightFactor?widthFactor:heightFactor);

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 <Foundation/Foundation.h>

@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 App开发中扩展RCLabel组件进行基于HTML的文本布局

iOS App开发中Objective-C使用正则表达式进行匹配的方法

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

ajax 三种实现方法实例代码

iOS中定位当前位置坐标及转换为火星坐标的方法

iOS通过http post上传图片

ios 获取汉字拼音的方法比较

IOS绘制虚线的方法总结

iOS实现选项卡效果的方法

精品推荐
分类导航