我有一个功能,我想拍一张UIView的截图(在我的代码中称为“arrangeView”)。并将图片发送到我的服务器,然后我将打印它,所以我想要一个高数量的图片..
我的代码:
UIGraphicsBeginImageContext(arrangeView.frame.size);
[arrangeView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//save and send method
[self saveImage:newImage WithName:imgTitle];
使用这些代码我有两个问题:
图片质量太低。因为我上传到了 服务器,我会打印出来的。但我只用代码得到的图片 20~40k,打印太小。
一位朋友告诉我,应用程序商店不会让应用程序截取屏幕截图并将其发送到服务器。他告诉我使用位图。
我在谷歌搜索,我找不到一个好的解决方案。有人会帮忙吗?
非常感谢。
答案 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);