Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为屏幕截图以编程方式限制屏幕_Ios_Image_Screenshot - Fatal编程技术网

Ios 为屏幕截图以编程方式限制屏幕

Ios 为屏幕截图以编程方式限制屏幕,ios,image,screenshot,Ios,Image,Screenshot,我正在制作与图像相关的应用程序。 我的屏幕上有多个图像。 我已经拍了那张照片。 但我想拍一些有限区域的屏幕截图, 所以基本上我想限制屏幕截图的帧。 下面是我的屏幕截图代码 -(UIImage *) screenshot { UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, [UIScreen mainScreen].scale); [self.view drawViewHierarchyInRe

我正在制作与图像相关的应用程序。 我的屏幕上有多个图像。 我已经拍了那张照片。 但我想拍一些有限区域的屏幕截图, 所以基本上我想限制屏幕截图的帧。 下面是我的屏幕截图代码

-(UIImage *) screenshot
{
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, [UIScreen mainScreen].scale);

    [self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:YES];

    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
拍摄完屏幕截图后,我用下面的代码在facebook共享方法中使用它

UIImage *image12 = [self screenshot];

[mySLComposerSheet addImage:image12];
比如:

-(UIImage *)ConvertToImage:(UIView *)view
{
    UIGraphicsBeginImageContext(view.frame.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return viewImage;
}

如果我理解正确,你需要截图并裁剪它。有很多选择,这是其中之一:

UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); /* this is the full capture */
CGRect r = (CGRect){{image.size.width * 0.25, image.size.height * 0.25}, {image.size.width / 2, image.size.height / 2}};
CGImageRef ref = CGImageCreateWithImageInRect(image.CGImage, r);
UIImage *cropped = [UIImage imageWithCGImage:ref]; /* this is the center area */
CGImageRelease(ref);
UIGraphicsEndImageContext();
只需捕获正确的视图并计算正确的矩形


在iOS 7中,您可以使用
UIView
更快的
drawViewHierarchyInRect:AfterScreen更新:
而不是
RenderContext

,因此您在这里需要的是什么…想要为快照提供自定义帧,而上面的代码不会为我提供整个屏幕的图像。通过使用此代码,在截屏图像中,我想解决的问题是,在图像中看不到顶部和底部的小部分。我可以为其提供矩形框吗?我认为用户可以将其视为框架,尝试使其透明,并将其放置在您喜欢的图像(或图像的一部分)上,然后调用此方法。。。我不知道你做的是否正确,因为我用的是这段代码,对我来说效果很好,但它并没有给我一个完美的视图快照,快照时我的某个角落看不到。我不知道你做的是否正确,因为我用的是这段代码,对我来说效果很好。我正在为iphone ratina 4英寸做这段代码,我希望这不会造成任何问题。我已经更改了代码的一行[self.layer renderInContext:UIGraphicsGetCurrentContext()];至[self.view drawViewHierarchyInRect:self.view.frame AfterScreen更新:是];我的问题是,我使用的代码是我在这个que中编写的,通过使用屏幕快照图像不显示我的整个屏幕,在屏幕快照图像中看不到最顶部和最底部屏幕的一小部分。帮帮我,我不知道有什么问题。如果要捕获整个屏幕,请使用顶层窗口而不是self.view。