如何在iOS上使用位图截取屏幕截图

时间:2015-06-08 09:43:12

标签: ios bitmap

我有一个功能,我想拍一张UIView的截图(在我的代码中称为“arrangeView”)。并将图片发送到我的服务器,然后我将打印它,所以我想要一个高数量的图片..

我的代码:

 UIGraphicsBeginImageContext(arrangeView.frame.size);
    [arrangeView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    //save and send method
    [self saveImage:newImage WithName:imgTitle];

使用这些代码我有两个问题:

  1. 图片质量太低。因为我上传到了 服务器,我会打印出来的。但我只用代码得到的图片 20~40k,打印太小。

  2. 一位朋友告诉我,应用程序商店不会让应用程序截取屏幕截图并将其发送到服务器。他告诉我使用位图。

  3. 我在谷歌搜索,我找不到一个好的解决方案。有人会帮忙吗?

    非常感谢。

2 个答案:

答案 0 :(得分:1)

你得到的屏幕截图与你的主屏尺寸分辨率相同,如果它是iPhone 5s,它将是640 x 1136.获得屏幕截图的最佳方式是:

UIView *screenShotView = [arrangeView snapshotViewAfterScreenUpdates:YES];

答案 1 :(得分:-1)

请尝试使用以下代码。您可以先保存在相册中,然后再发送到服务器

UIView* captureView = self.view;

/* Capture the screen shoot at native resolution */
UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, captureView.opaque, 0.0);
[captureView.layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

 /* Render the screen shot at custom resolution */
    CGRect cropRect = CGRectMake(0 ,0 ,1435 ,1435);
    UIGraphicsBeginImageContextWithOptions(cropRect.size, captureView.opaque, 1.0f);
  [screenshot drawInRect:cropRect];
    UIImage * customScreenShot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

  /* Save to the photo album */
   UIImageWriteToSavedPhotosAlbum(customScreenShot , nil, nil, nil);