您的位置:首页 > 产品设计 > UI/UE

【iOS开发笔记24/50】调整UIImage的大小

2012-06-22 21:02 501 查看
对UIImage调整大小,不知道苹果的API里为什么不提供?

//

// ImageExtras.h

//

#import <Foundation/Foundation.h>

@interface UIImage (Extras)

- (UIImage *)imageByScalingToSize:(CGSize)targetSize;

@end

//

// ImageExtras.m

//

// 摘自下面的论坛

// http://www.iphonedevsdk.com/forum/iphone-sdk-development/7307-resizing-photo-new-uiimage-2.html

//

#import "ImageExtras.h"

@implementation UIImage (Extras)

- (UIImage *)imageByScalingToSize:(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;

else

scaleFactor = heightFactor;

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;

}

}

// this is actually the interesting part:

UIGraphicsBeginImageContext(targetSize);

CGRect thumbnailRect = CGRectZero;

thumbnailRect.origin = thumbnailPoint;

thumbnailRect.size.width = scaledWidth;

thumbnailRect.size.height = scaledHeight;

[sourceImage drawInRect:thumbnailRect];

newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

if(newImage == nil)

NSLog(@"could not scale image");

return newImage ;

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: