현재 제공된 GPUImage
필터 중 3 개 (Amatorka, Etikate 및 Soft Elegance) 중 3 개를 사용하고 있으며 사용자가 필터를 적용 할 수있는 것이 가장 이상적입니다. (예 : 사용자가 필터를 적용한 상태에서 사진의 모습을 보려면 왼쪽 또는 오른쪽으로 사진을 스 와이프 할 수 있습니다.)빠른로드 시간을 위해 GPUImage 필터를 "미리 채우는 방법"
현재 문제는 처음부터 끝까지 3 개의 필터가 처리를 완료하기 위해 1.5 초 이상 걸립니다 (iPhone 5에서). 나는 strong
속성으로 필터를 저장하고 viewDidLoad
에 인스턴스화하여 프로세스를 빠르게하려고했지만이 모든 결과는 메모리 경고이며 응용 프로그램이 충돌합니다. 기다릴 필요없이 신속하게 적용 할 수 있도록 필터를 미리 채울 수있는 좋은 해결 방법이 있는지 궁금 해서요.
도움을 많이 받으실 수 있습니다. 나는 과정에게 Amatorka 필터를 사용하는 샘플 방법을 아래에 붙여 넣은 :
- (void)processAmatorkaFilter
{
dispatch_queue_t backgroundQueue = dispatch_queue_create("queue1", 0);
dispatch_async(backgroundQueue, ^{
//do filter work
UIImage *imageShown = self.totalOriginalImage;
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:imageShown];
GPUImageAmatorkaFilter *amoFilter = [[GPUImageAmatorkaFilter alloc] init];
[stillImageSource addTarget:amoFilter];
[amoFilter useNextFrameForImageCapture];
[stillImageSource processImage];
UIImage *currentFilteredVideoFrame = [amoFilter imageFromCurrentFramebuffer];
UIImage *revampedImage = [self orientationAdjustment:currentFilteredVideoFrame];
if (isFrontFacing){
revampedImage = [UIImage imageWithCGImage:revampedImage.CGImage scale:revampedImage.scale orientation:UIImageOrientationLeftMirrored];
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.filteredImageArray addObject:revampedImage];
NSLog(@"\n\nDone Amatorka\n\n");
});
});
}
을 그리고 이것은 내가 필터를 적용 할 수 있도록하는 방법이다 :
- (void)handleLeftSwipe:(UIGestureRecognizer*)recognizer {
NSLog(@"Swiped left");
if (rotatingNumber == 3){ //3 filters and 1 original image in total
rotatingNumber = 0;
} else {
rotatingNumber++;
}
UIImage *swipedImage = [self.filteredImageArray objectAtIndex:rotatingNumber];
self.imageView.image = swipedImage;
}
이것은 훌륭한 조언입니다 - 감사합니다! – daspianist
@BradLarson 안녕하세요, 나는이 세 가지 필터 (Amatorka, Etikate Miss 및 Soft Elegance)를 하나의 사전 녹화 된 영화에 추가해야합니다. 추가 중이지만 동영상 속도가 느립니다. 비디오 용 필터를 빠르게 할 수있는 방법이 있습니까? – Bhushan
@Bhushan - 세 가지 패스 모두를 통해 전송 된 내용에 대해 올바른 조회를 사용하는 단일 조회 필터로 결합 해보십시오. –