UIImage处理

目录中读取图片

+ (UIImage *)newImageFromResource:(NSString *)filename{

   NSString *imageFile = [[NSStringalloc]initWithFormat:@"%@/%@",

                           [[NSBundlemainBundle]resourcePath], filename];

   UIImage *image =nil;

   image = [[UIImagealloc]initWithContentsOfFile:imageFile];

   [imageFilerelease];

   return image;

}

获取固定大小的图片

-(UIImage *)imageAtRect:(CGRect)rect{

CGImageRef imageRef =CGImageCreateWithImageInRect([self CGImage], rect);

UIImage* subImage = [UIImage imageWithCGImage: imageRef];

CGImageRelease(imageRef);

return subImage;

}


等比例缩放图片

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

}elseif (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)DLog(@"could not scale image");

return newImage ;

}


旋转图片一个角度

- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees{   

// calculate the size of the rotated view's containing box for our drawing space

UIView *rotatedViewBox = [[UIView alloc]initWithFrame:CGRectMake(0,0,self.size.width,self.size.height)];

CGAffineTransform t = CGAffineTransformMakeRotation(DegreesToRadians(degrees));

rotatedViewBox.transform = t;

CGSize rotatedSize = rotatedViewBox.frame.size;

[rotatedViewBox release];

// Create the bitmap context

UIGraphicsBeginImageContext(rotatedSize);

CGContextRef bitmap =UIGraphicsGetCurrentContext();

// Move the origin to the middle of the image so we will rotate and scale around the center.

CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2);

//   // Rotate the image context

CGContextRotateCTM(bitmap,DegreesToRadians(degrees));

// Now, draw the rotated/scaled image into the context

CGContextScaleCTM(bitmap,1.0, -1.0);

CGContextDrawImage(bitmap,CGRectMake(-self.size.width /2, -self.size.height /2,self.size.width,self.size.height), [selfCGImage]);

UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值