ios 圖片部分截圖
實現思路:首先進行全屏截圖,在進行區域性截圖,就這麼簡單;
1.全屏截圖:
- (UIImage *)getSnapshotImage { UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)), NO, 1);
[self.view drawViewHierarchyInRect:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)) afterScreenUpdates:NO];
UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
return snapshot;
}
2.部分截圖
+ (UIImage *)ct_imageFromImage:(UIImage *)image inRect:(CGRect)rect{
//把像 素rect 轉化為 點rect(如無轉化則按原影象素取部分圖片)
// CGFloat scale = [UIScreen mainScreen].scale;
// CGFloat x= rect.origin.x*scale,y=rect.origin.y*scale,w=rect.size.width*scale,h=rect.size.height*scale;// CGRect dianRect = CGRectMake(x, y, w, h);
//擷取部分圖片並生成新圖片
CGImageRef sourceImageRef = [image CGImage];
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect); UIImage *newImage = [UIImage imageWithCGImage:newImageRef scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
return newImage;
}
3.拖動檢視
UIPanGestureRecognizer * panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(doHandlePanAction:)];
[_areaIamgeView addGestureRecognizer:panGestureRecognizer];
-(void)doHandlePanAction:(UIPanGestureRecognizer *)paramSender{
CGPoint point = [paramSender translationInView:self.view]; paramSender.view.center = CGPointMake(paramSender.view.center.x + point.x, paramSender.view.center.y + point.y); [paramSender setTranslation:CGPointMake(0, 0) inView:self.view];
}
直接上程式碼,可以直接貼上複製執行:(不要在意細節)
#import@interface ViewController : UIViewController
@end
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic,strong)UIImageView *backImageView;
@property(nonatomic,strong)UIImageView *areaIamgeView;
@end
@implementation ViewController{
UIView *_backView;
CGRect _rect;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self backImageView];
[self areaIamgeView];
UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
button.frame=CGRectMake(0, self.view.frame.size.height-44, self.view.frame.size.width, 44);
button.backgroundColor=[UIColor blueColor];
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
//這裡對檢視進行拖動
-(void)doHandlePanAction:(UIPanGestureRecognizer *)paramSender{
CGPoint point = [paramSender translationInView:self.view];
NSLog(@"X:%f;Y:%f",point.x,point.y);
paramSender.view.center = CGPointMake(paramSender.view.center.x + point.x, paramSender.view.center.y + point.y);
[paramSender setTranslation:CGPointMake(0, 0) inView:self.view];
}
-(void)jietu{
UIImage *image=[self getSnapshotImage];
_backView=[[UIView alloc]initWithFrame:self.view.frame];
_backView.backgroundColor=[UIColor whiteColor];
[self.view addSubview:_backView];
UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
button.frame=CGRectMake(0, self.view.frame.size.height-44, self.view.frame.size.width, 44);
button.backgroundColor=[UIColor blueColor];
[button addTarget:self action:@selector(cancelButtonClick) forControlEvents:UIControlEventTouchUpInside];
[_backView addSubview:button];
UIImageView *checkImageView=[[UIImageView alloc]init];
checkImageView.center=_backView.center;
checkImageView.bounds=CGRectMake(0, 0, 200, 200);
checkImageView.contentMode=UIViewContentModeScaleAspectFit;
[_backView addSubview:checkImageView];
UIImage *newImage=[ViewController ct_imageFromImage:image inRect:_rect];
checkImageView.image=newImage;
}
-(void)buttonClick{
NSLog(@"%f,%f,%f,%f",self.areaIamgeView.frame.origin.x,self.areaIamgeView.frame.origin.y,self.areaIamgeView.frame.size.width,self.areaIamgeView.frame.size.height);
_rect=self.areaIamgeView.frame;
_areaIamgeView.alpha=0;
[self performSelector:@selector(jietu) withObject:nil afterDelay:0.05];
}
//得到全屏截圖
- (UIImage *)getSnapshotImage {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)), NO, 1);
[self.view drawViewHierarchyInRect:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame)) afterScreenUpdates:NO];
UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snapshot;
}
//擷取部分圖片
+ (UIImage *)ct_imageFromImage:(UIImage *)image inRect:(CGRect)rect{
//把像 素rect 轉化為 點rect(如無轉化則按原影象素取部分圖片)
// CGFloat scale = [UIScreen mainScreen].scale;
// CGFloat x= rect.origin.x*scale,y=rect.origin.y*scale,w=rect.size.width*scale,h=rect.size.height*scale;
// CGRect dianRect = CGRectMake(x, y, w, h);
//擷取部分圖片並生成新圖片
CGImageRef sourceImageRef = [image CGImage];
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, rect);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
return newImage;
}
-(void)cancelButtonClick{
self.areaIamgeView.alpha=1;
[_backView removeFromSuperview];
}
-(UIImageView *)backImageView{
if (!_backImageView) {
_backImageView=[[UIImageView alloc]init];
_backImageView.frame=self.view.frame;
_backImageView.image=[UIImage imageNamed:@"1.jpg"];
_backImageView.contentMode=UIViewContentModeScaleAspectFit;
[self.view addSubview:_backImageView];
}
return _backImageView;
}
-(UIImageView *)areaIamgeView{
if (!_areaIamgeView) {
_areaIamgeView=[[UIImageView alloc]init];
_areaIamgeView.center=self.view.center;
_areaIamgeView.bounds=CGRectMake(0, 0, 100, 100);
_areaIamgeView.backgroundColor=[UIColor whiteColor];
_areaIamgeView.alpha=0.8;
_areaIamgeView.userInteractionEnabled=YES;
UIPanGestureRecognizer * panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self
action:@selector(doHandlePanAction:)];
[_areaIamgeView addGestureRecognizer:panGestureRecognizer];
[self.view addSubview:_areaIamgeView];
}
return _areaIamgeView;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
相關文章
- ios裁剪圖片iOS
- iOS-圖片水印,圖片裁剪和螢幕截圖iOS
- DDGScreenShot —iOS 圖片處理--多圖片拼接 (swift)iOSSwift
- iOS圖片變灰iOS
- IOS圖片壓縮iOS
- IOS 平鋪圖片iOS
- iOS 圖片處理iOS
- ios拼圖遊戲(一)之分割圖片iOS遊戲
- iOS 圖片壓縮方法iOS
- iOS 圖片上新增水印iOS
- iOS實現點選圖片放大&長按儲存圖片iOS
- iOS 獲取視訊圖片iOS
- iOS 拿到IPA圖片資源iOS
- iOS圖片設定圓角iOS
- iOS無限輪播圖片iOS
- 『ios』view和tableview的截圖和圖片拼接iOSView
- iOS儲存網路圖片和讀取本地沙盒圖片iOS
- 前端手勢控制圖片外掛書寫四(圖片上傳及Ios圖片方向問題)前端iOS
- iOS圖片瀏覽器 - XLPhotoBrowser(類似微信多圖片瀏覽效果)iOS瀏覽器
- iOS開發圖片格式選擇iOS
- iOS圖片記憶體優化iOS記憶體優化
- Android 和 iOS 圖片輪播AndroidiOS
- iOS 常用圖片格式判斷 (Swift)iOSSwift
- iOS開發之字串轉圖片iOS字串
- iOS ImageView contentMode 圖片填充模式iOSView模式
- iOS 顏色製作背景圖片iOS
- iOS開發中壓縮圖片的質量以及縮小圖片尺寸iOS
- .9圖怎麼切?iOS如何處理這種圖片iOS
- Swift iOS : WebView快取圖片的方法SwiftiOSWebView快取
- iOS 關於 GIF 圖片那點事iOS
- iOS 針對有中文的url圖片iOS
- iOS載入WebP格式圖片小結iOSWeb
- iOS Swift 仿微信聊天圖片顯示iOSSwift
- IOS 自定義 UIDatePicker 背景圖片iOSUI
- java匯出圖片,拼接多個圖片, 拼接文字和圖片 到一個圖片檔案Java
- iOS開發者必備:六大圖片、圖示處理類工具iOS
- iOS開發 如何在Label中顯示圖片-圖文混排iOS
- 圖片上傳及圖片處理