Trong ứng dụng của tôi, tôi đang sử dụng phương pháp chụp màn hình. Trên iPad 2 của tôi nó rất nhanh (khoảng 130 ms) để thực hiện phương pháp này. Nhưng trên iPad mới (chắc chắn là do độ phân giải cao nhất và cùng một CPU), nó giống như 700 ms! Có cách nào để tối ưu hóa phương pháp của tôi không? Có lẽ có một cách để làm việc trực tiếp với card đồ họa?iPad 3 ảnh chụp màn hình chậm
Dưới đây là phương pháp chụp màn hình của tôi:
- (UIImage *)image {
CGSize imageSize = self.bounds.size;
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) UIGraphicsBeginImageContextWithOptions(imageSize, NO, [UIScreen mainScreen].scale);
else UIGraphicsBeginImageContext(imageSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextTranslateCTM(context, [self center].x, [self center].y);
CGContextConcatCTM(context, [self transform]);
CGContextTranslateCTM(context, -[self bounds].size.width * [[self layer] anchorPoint].x, -[self bounds].size.height * [[self layer] anchorPoint].y);
[[self layer] renderInContext:context];
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Nhờ sự giúp đỡ của bạn.
Không thể giúp bạn ở đây. Nhưng tôi nghĩ rằng 700ms là rất chậm. Nó không nên giống như 130ms * 4 = 520ms? –
Hãy thử sử dụng 'UIGraphicsBeginImageContextWithOptions (imageSize, NO, 0.0f);' thay vì 'UIGraphicsBeginImageContextWithOptions (imageSize, NO, [UIScreen mainScreen] .scale);'. Điều này sẽ tạo cho ảnh chụp màn hình 1: 1. Hoặc có lý do cụ thể nào bạn cần '[UIScreen mainScreen] .scale' ở đó không? –
@ Jenox yeah nó phụ thuộc nhưng nó giống như 700ms. – Pierre