mirror of
https://github.com/viq/NewsBlur.git
synced 2025-08-05 16:49:45 +00:00
83 lines
2.1 KiB
Objective-C
83 lines
2.1 KiB
Objective-C
//
|
|
// UIImage+Resize.m
|
|
// NewsBlur
|
|
//
|
|
// Created by Samuel Clay on 2/11/14.
|
|
// Copyright (c) 2014 NewsBlur. All rights reserved.
|
|
//
|
|
|
|
#import "UIImage+Resize.h"
|
|
|
|
@implementation UIImage (Resize)
|
|
|
|
#pragma mark -
|
|
#pragma mark Scale and crop image
|
|
|
|
- (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
|