matsuda
8/22/2011 - 3:25 AM

画像のリサイズ

画像のリサイズ

- (CGFloat)aspectRatio:(UIImage *)image size:(CGSize)size
{
    CGFloat widthRatio  = size.width  / image.size.width;
    CGFloat heightRatio = size.height / image.size.height;
    return (widthRatio < heightRatio) ? widthRatio : heightRatio;
}

- (CGSize)resizedSize:(UIImage *)image size:(CGSize)size
{
    CGFloat ratio = [self aspectRatio:image size:size];
    return CGSizeMake(image.size.width*ratio, image.size.height*ratio);
}

/* 
 UIImage *shrinkedImage = [self resizedImage:image size:CGSizeMake(320, 320)];
 */ 
- (UIImage *)resizedImage:(UIImage *)image size:(CGSize)size
{
    CGSize resizedSize = [self resizedSize:image size:size];

    UIGraphicsBeginImageContext(resizedSize);

    [image drawInRect:CGRectMake(0, 0, resizedSize.width, resizedSize.height)];
    UIImage* resizedImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return resizedImage;
}
#import "UIImage+Resize.h"


@implementation UIImage (Resize)

- (CGFloat)aspectRatio:(CGSize)size
{
    CGFloat widthRatio  = size.width  / self.size.width;
    CGFloat heightRatio = size.height / self.size.height;
    return (widthRatio < heightRatio) ? widthRatio : heightRatio;
}

- (CGSize)resizedSize:(CGSize)size
{
    CGFloat ratio = [self aspectRatio:size];
    return CGSizeMake(self.size.width * ratio, self.size.height * ratio);
}

- (UIImage *)resizedImage:(CGSize)size
{
    CGSize resizedSize = [self resizedSize:size];

    UIGraphicsBeginImageContext(resizedSize);

    [self drawInRect:CGRectMake(0, 0, resizedSize.width, resizedSize.height)];
    UIImage* resizedImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return resizedImage;
}

@end
#import <Foundation/Foundation.h>


@interface UIImage (Resize)
- (CGFloat)aspectRatio:(CGSize)size;
- (CGSize)resizedSize:(CGSize)size;
- (UIImage *)resizedImage:(CGSize)size;
@end