swift:
//注意/Users/point/Desktop == point是我电脑的用户名 改成你自己的 let img1 = getImage(size: CGSize(width: 200,height: 200),currentView: view) let img2 = getImageFromImage(oldImage: img1,newImageRect: CGRect(x: 100,y: 100,width: 100,height: 100)) let imgData = UIImageJPEGRepresentation(img2,1) NSData(data: imgData!).write(toFile: "/Users/point/Desktop/456.png",atomically: true)
//View生成图片 func getImage(size:CGSize,currentView:UIView) -> UIImage { UIGraphicsBeginImageContextWithOptions( size,true,1.0) currentView.layer.render(in: UIGraphicsGetCurrentContext()!) let image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image!; } //图片中截取图片 func getImageFromImage(oldImage:UIImage,newImageRect:CGRect) ->UIImage { let imageRef = oldImage.cgImage; let subImageRef = imageRef!.cropping(to: newImageRect); return UIImage(cgImage: subImageRef!) }
赠送OC版本的:
// 从view上截图 - (UIImage *)getImage { UIGraphicsBeginImageContextWithOptions(CGSizeMake(150,150),NO,1.0); //NO,YES 控制是否透明 [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // 生成后的image return image; } // 根据给定得图片,从其指定区域截取一张新得图片 -(UIImage *)getImageFromImage{ //大图bigImage //定义myImageRect,截图的区域 CGRect myImageRect = CGRectMake(70,10,150,150); UIImage* bigImage= [UIImage imageNamed:@"mm.jpg"]; CGImageRef imageRef = bigImage.CGImage; CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef,myImageRect); CGSize size; size.width = 150; size.height = 150; UIGraphicsBeginImageContext(size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextDrawImage(context,myImageRect,subImageRef); UIImage* smallImage = [UIImage imageWithCGImage:subImageRef]; UIGraphicsEndImageContext(); return smallImage; }