내 프로젝트에서는 스크린의 스크린 샷을 만들고 블러를 적용하여 젖빛 유리 효과를 만들어야합니다. 내용물은 유리 밑으로 옮길 수 있으며 블러 링 된 그림이 변경되었습니다.Fast 스크린 샷 ios
I'v는 고속 처리를 위해 Accelerate.framework를 사용했으며, 또한 i, OpenGL을 사용하여 CIImage를 GLView에 직접 그렸습니다.
이제 화면의 스크린 샷을 최적화하는 방법을 찾고 있습니다. 나는 화면 하단에 일부 지역의 스크린 샷을 얻기 위해이 방법을 사용 : self.view 1-2 파단이 있지만 여러 하위 뷰가있는 경우 (또는 경우
CGSize size = CGSizeMake(rect.size.width, rect.size.height);
// get screenshot of self.view
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(nil, size.width, size.height, 8, 0, colorSpaceRef, kCGImageAlphaPremultipliedFirst);
CGContextClearRect(ctx, rect);
CGColorSpaceRelease(colorSpaceRef);
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
CGContextSetShouldAntialias(ctx, NO);
CGContextSetAllowsAntialiasing(ctx, NO);
CGContextTranslateCTM(ctx, 0.0, someView.frame.size.height);
CGContextScaleCTM(ctx, 1, -1);
//add mask
CGImageRef maskImage = [UIImage imageNamed:@"mask.png"].CGImage;
CGContextClipToMask(ctx, rect, maskImage);
[someView.layer renderInContext:ctx];
//get screenshot image
CGImageRef imageRef = CGBitmapContextCreateImage(ctx);
이 미세하고 빠른 작동 tableview), 모든 것이 느려지 기 시작합니다.
그래서 화면의 일부 rect에서 픽셀을 얻는 빠른 방법을 찾으려고합니다. 어쩌면 저수준 API를 사용했을 수도 있습니다.
위의 작업 속도가 가장 중요합니까? 또는 주 스레드를 차단하지 않아 사용자 환경에 미치는 영향을 최소화 할 수 있습니까? – dtuckernet
주요 목표는 디자이너의 아이디어를 유지하면서 반응이 빠른 사용자 인터페이스를 얻는 것입니다. 이제 사용자가 iPhone 4에서 테이블보기를 스크롤하면 초당 프레임 수가 20이됩니다. 60 FPS를 갈망합니다. 이러한 결과는 스크롤링보기를 사용하여 한 장의 사진을 안에 넣었지만 여러 장의 이미지가있는 표보기 또는 스크롤보기를 사용하면 서로 중첩되어 성능이 20FPS로 떨어졌습니다. – Numeral
테이블 뷰에서 셀을 재사용하고 있는지 확인 했습니까? – mkral