iOS图片的处理

来源:互联网 发布:新浪网络运营文职岗 编辑:程序博客网 时间:2024/06/04 20:03

一、有时候图片过大,我们只想要图片的一部分,如下函数能帮你处理:

/** 截取图片的一部分 */- (UIImage *)capturePartOfImage:(UIImage *)imgeSource {    //要截取的区域    CGRect frameTemp = CGRectMake(imgeSource.size.width/2, imgeSource.size.height/2, 40, 40);    //原图    CGImageRef imageSourceRef = imgeSource.CGImage;    CGImageRef subImageRef = CGImageCreateWithImageInRect(imageSourceRef, frameTemp);    //尺寸大小    CGSize size = frameTemp.size;    UIGraphicsBeginImageContext(size);    CGContextRef context = UIGraphicsGetCurrentContext();    CGContextDrawImage(context, frameTemp, subImageRef);    UIImage *img = [UIImage imageWithCGImage:subImageRef];    UIGraphicsEndImageContext();    return img;}

二、图片的合成及重新绘制

/** 图片的合成及重绘 */- (UIImage *)redrawImage:(UIImage *)ImageFirst imageSecond:(UIImage *)imageSecond  {    UIGraphicsBeginImageContext(CGSizeMake(100, 100));    [ImageFirst drawInRect:CGRectMake(0, 0, 50, 100)];    [imageSecond drawInRect:CGRectMake(50, 0, 50, 50)];    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return img;}

三、UIView生成图片

/** 将一个view制作为图片 */- (UIImage *)captureView:(UIView *)view {    CGRect rect = view.frame;    UIGraphicsBeginImageContext(rect.size);    CGContextRef context = UIGraphicsGetCurrentContext();    [view.layer renderInContext:context];    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return img;}

四、图片保存到App的沙盒

//路径NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"image.png"];//存储[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];

五、保存到手机图片库

//保存到相册UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);

六、尺寸大小的计算

 /** 自动计算尺寸 */    CGRect rect = AVMakeRectWithAspectRatioInsideRect(image.size, imageView.bounds)    /** 计算缩放的尺寸 */    CGSize sizeCal = CGSizeApplyAffineTransform(imgeSource.size, CGAffineTransformMakeScale(0.5, 0.5));

七、其它

// 另一:使用Core Graphics创建倒影- (CGImageRef) createGradientImage:(CGSize)size {    CGFloat colors[] = {0.0,1.0,1.0,1.0};    //在灰色设备色彩上建立一渐变    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();    CGContextRef context = CGBitmapContextCreate(nil,size.width,size.height,8,0,colorSpace,kCGImageAlphaNone); CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,colors,NULL,2); CGColorSpaceRelease(colorSpace);    //绘制线性渐变    CGPoint p1 = CGPointZero;    CGPoint p2 = CGPointMake(0,size.height);    CGContextDrawLinearGradient(context,gradient,p1,p2,kCGGradientDrawsAfterEndLocation);    //Return the CGImage    CGImageRef theCGImage = CGBitmapContextCreateImage(context); CFRelease(gradient); CGContextRelease(context);    return theCGImage;}const CGFloat kReflectPercent = -0.25f;const CGFloat kReflectOpacity = 0.3f;const CGFloat kReflectDistance = 10.0f;- (void)addSimpleReflectionToView:(UIView *)theView {    CALayer *reflectionLayer = [CALayer layer];    reflectionLayer.contents = [theView layer].contents; reflectionLayer.opacity = kReflectOpacity; reflectionLayer.frame = CGRectMake(0.0f,0.0f,theView.frame.size.width,theView.frame.size.height*kReflectPercent);    //倒影层框架设置,其中高度是原视图的百分比    CATransform3D stransform = CATransform3DMakeScale(1.0f,-1.0f,1.0f);    CATransform3D transform = CATransform3DTranslate(stransform,0.0f,-(kReflectDistance + theView.frame.size.height),0.0f);    reflectionLayer.transform = transform;    reflectionLayer.sublayerTransform = reflectionLayer.transform;    [[theView layer] addSublayer:reflectionLayer];}
1 0
原创粉丝点击