UIimage扩展-缩放,裁切,改变大小-合并-保存到媒体库

UIimage

- (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;

}



- (UIImage*)transformWidth:(CGFloat)width //变大小
                    height:(CGFloat)height {
    
    CGFloat destW = width;
    CGFloat destH = height;
    CGFloat sourceW = width;
    CGFloat sourceH = height;
        
    CGImageRef imageRef = self.CGImage;
    CGContextRef bitmap = CGBitmapContextCreate(NULL,
                                                destW,
                                                destH,
                                                CGImageGetBitsPerComponent(imageRef),
                                                4*destW,
                                                CGImageGetColorSpace(imageRef),
                                                (kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst));
    
    CGContextDrawImage(bitmap, CGRectMake(0, 0, sourceW, sourceH), imageRef);
    
    CGImageRef ref = CGBitmapContextCreateImage(bitmap);
    UIImage *result = [UIImage imageWithCGImage:ref];
    //result.imageOrientation = UIImageOrientationRight;
    CGContextRelease(bitmap);
    CGImageRelease(ref);
    
    return result;
}



- (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 //合并图片

{ 
    UIGraphicsBeginImageContext (image1. size ); 
 
    // Draw image1 
    [image1 drawInRect :CGRectMake ( 0, 0, image1. size. width, image1. size. height ) ]; 
 
    // Draw image2 
    [image2 drawInRect :CGRectMake ( 0, 0, image2. size. width, image2. size. height ) ]; 
 
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext ( ); 
 
    UIGraphicsEndImageContext ( ); 
 
    return resultingImage; 
}

+ (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect;//裁剪部分图片

Create a UIImage from a part of another UIImage


This requires a round-trip to Core Graphics land:


- (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect {  

    CGImageRef sourceImageRef = [image CGImage];  

    CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);  

    UIImage *newImage = [UIImage imageWithCGImage:newImageRef];  

    return  newImage;  

}  

- (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect {  

    CGImageRef sourceImageRef = [image CGImage];  

    CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);  

    UIImage *newImage = [UIImage imageWithCGImage:newImageRef];  

    return newImage;  

}  


Save UIImage to Photo Album//保存图片到媒体库


This is just a one-liner:


UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), context);  


UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), context); 


And to know if the save was successful:


- ( void )imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:( void  *)contextInfo //保存图片到媒体库{  

    NSString *message;  

    NSString *title;  

    if  (!error) {  

        title = NSLocalizedString(@"SaveSuccessTitle" , @ "" );  

        message = NSLocalizedString(@"SaveSuccessMessage" , @ "" );  

    } else  {  

        title = NSLocalizedString(@"SaveFailedTitle" , @ "" );  

        message = [error description];  

    }  

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title  

                                                    message:message  

                                                   delegate:nil  

                                          cancelButtonTitle:NSLocalizedString(@"ButtonOK" , @ "" )  

                                          otherButtonTitles:nil];  

    [alert show];  

    [alert release];  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值