截取屏幕并且保存到相册

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];
    btn.center = CGPointMake(100, 200);
    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];

    myview = [[UIImageView alloc]initWithFrame:CGRectMake(10, 30, 300, 200)];
    [self.view addSubview:myview];

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 40, 280, 30)];
    label.text = @"我是黄成都,这是我的截屏保存演练";
    [self.view addSubview:label];
}

-(void)btnClick
{
    UIImage *image = [self makeImageWithView:self.view];
    myview.image = image;

    [self saveImageToPhotos:image];
}

//截屏
- (UIImage *)makeImageWithView:(UIView *)view
{
    CGSize s = view.bounds.size;
    // 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了,关键就是第三个参数。

//    float scale = [[UIScreenmainScreen] scale];//得到设备的分辨率
//    scale = 1; 的时候是代表当前设备是320*480的分辨率(就是iphone4之前的设备)
//    scale = 2; 的时候是代表分辨率为640*960的分辨率
    NSLog(@"%f",[UIScreen mainScreen].scale);
    //绘图
    UIGraphicsBeginImageContextWithOptions(s, NO, [UIScreen mainScreen].scale);
    //渲染
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    //生产图片
    UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

//保存图片到相框
- (void)saveImageToPhotos:(UIImage *)savedImage

{

//    image
//    要保存到用户设备中的图片
//    completionTarget
//    当保存完成后,回调方法所在的对象
//    completionSelector
//    当保存完成后,所调用的回调方法。 形式如下:
//    - (void) image: (UIImage *) image
//didFinishSavingWithError: (NSError *) error
//contextInfo: (void *) contextInfo;
//    contextInfo
//    可选的参数,保存了一个指向context数据的指针,它将传递给回调方法。
    UIImageWriteToSavedPhotosAlbum(savedImage,self, @selector(image:didFinishSavingWithError:contextInfo:),NULL);

}

- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo

{

    NSString *msg = nil ;

    if(error != NULL){

        msg = @"保存图片失败" ;

    }else{

        msg = @"保存图片成功" ;

    }
    NSLog(@"%@", msg);

}

时间: 2024-10-23 14:01:05

截取屏幕并且保存到相册的相关文章

截取屏幕并保存到本地

/* Capture the screenshot */    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 0.0f); if ([self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES]){        NSLog(@"Successfully draw the screenshot.");    }

c++截取屏幕图片并保存(函数代码实现)

<strong> //获取桌面窗体的CDC CDC *pdeskdc = GetDesktopWindow()->GetDC(); CRect re; //获取窗体的大小 GetDesktopWindow()->GetClientRect(&re); CBitmap bmp; bmp.CreateCompatibleBitmap(pdeskdc , re.Width() , re.Height()); //创建一个兼容的内存画板 CDC memorydc; memorydc

Swift-贝赛尔曲线实现画图板 &amp;&amp; 截图保存到相册中

本文内容参考自 传送门.原文是用 OC 写的,我把它改成了 Swift 的. 我们先来看看效果图: 第一幅图是我们画了一个 "iOS" 的图像,第二幅图是我们点击保存成功,第三幅图是可以在相册中看到我们刚才画的图. 感觉很不错有木有?接下来我们就来说说是怎么实现的. 我们分两部分来说:上半部分的画图板和下半部分的控制区. 上半部分的画图板是我们自定义的 view,我们设置如下属性: class MyView: UIView { var color = UIColor.redColor(

iOS截屏保存至相册

#pragma mark 截屏并保存至相册 -(void)screenShotsComplete:(void(^)(UIImage * img)) complete { CGSize imageSize = [[UIScreen mainScreen] bounds].size; UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0); CGContextRef context = UIGraphicsGetCurrentContext(

裁剪图片,截图,保存到相册,水印

// --- 裁剪圆形图片 -画带边框的圆形头像 - (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { // -1.获取图片 UIImage* image = [UIImage imageNamed:@"me"]; // -2.margin CGFloat margin = 10; // -3.上下文大小 CGSize size = CGSizeMake(image.size.width + 2 * margi

iOSQuartz2D-04-手动剪裁图片并保存到相册

实现效果 操作步骤 绘制一个矩形框,弹出一个alertView,提示是否保存图片 点击"是",将图片保存到相册 在相册中查看保存的图片 效果图 实现思路 在控制器的view上添加一个imageView,设置图片 在控制器的view上添加一个pan手势 跟踪pan手势,绘制一个矩形框(图片的剪切区域) 在pan手势结束时,通过alertView提示"是否将图片保存至相册?" 点击"是",保存图片 点击"否",暂时什么都不做 实现

截图生成图片并保存到相册

// 保存到相册 $("#content").on("click", "#savepic", function () { $("#waitingupload").removeClass("heisebghid").addClass("heisebg"); // 调用html2canvas生成截图 html2canvas($("#orderInfo")[0], { al

将ImageVi的Image保存到相册

/** *  将ImageVi的Image保存到相册 */ UIImageWriteToSavedPhotosAlbum(self.iconBigImageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); /***  返回数据是否保存成功 **/- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error

iOS 多张图片保存到相册问题(add multiple images to photo album)

不知道朋友们有木有做过多图保存到系统的相册这个需求,我在用`UIImageWriteToSavedPhotosAlbum`保存图片时候,在代理回调方`didFinishSavingWithError`中有些图片会出现这样的错误: 原因上面写的很清楚,在同时保存多张图的时候,系统资源有限,来不及处理全部图片,容易出现写入错误.如果每次保存的时候一张保存完再保存另一张,就不会出现这个错误了. 其实管理相册的是`ALAssetsLibrary`这个类,苹果官方对它的描述是这样的:An instance