Преобразование мультиплексируемого графического изображения из OBJ-C в Swift

#swift #gpuimage

#swift #графическое изображение

Вопрос:

Я нахожусь в процессе преобразования моего приложения GPUImage в Swift, но у меня возникли некоторые проблемы с преобразованием следующего.

 GPUImagePicture *lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Elevate.png" ofType:nil]]];

        [lookupImageSource forceProcessingAtSize:sourceImage.size];

        GPUImageMultiplyBlendFilter * blendFilter = [[GPUImageMultiplyBlendFilter alloc] init];

        GPUImageOpacityFilter *opacityFilter = [[GPUImageOpacityFilter alloc] init];
        opacityFilter.opacity = sliderValue;

        [lookupImageSource addTarget:opacityFilter];

        [stillImageSource addTarget:blendFilter];
        [opacityFilter addTarget:blendFilter];

        [blendFilter useNextFrameForImageCapture];

        [stillImageSource processImage];
        [lookupImageSource processImage];

        finishedImage = [blendFilter imageFromCurrentFramebufferWithOrientation:sourceImage.imageOrientation];
  

На данный момент я преобразовал в следующее, но я получаю ошибки при запуске кода.

 let filterOpacity = OpacityAdjustment()
            filterOpacity.opacity = 1

            let filterImage = PictureInput.init(image: UIImage.init(named: "Elevate.png")!)
            filterImage.addTarget(filterOpacity)


            let filterMultiplyBlend = MultiplyBlend()
            filterMultiplyBlend.addTarget(filterOpacity)


            imageOutput = sourceImage!.filterWithPipeline{input, output in
                input --> filterMultiplyBlend --> output
            }
  

Я получаю эту ошибку в качестве выходных данных.

Предупреждение: пытался добавить цель, превышающую возможности ввода цели -> Конвейер.swift: addTarget(_:atTargetIndex:): 43

Ответ №1:

Попробуйте это

         let filterOpacity = OpacityAdjustment()
        filterOpacity.opacity = 1

        let filterImage = PictureInput.init(image: UIImage.init(named: "Elevate.png")!)

        let filterMultiplyBlend = MultiplyBlend()

        imageOutput = sourceImage!.filterWithPipeline{input, output in
            input --> filterOpacity --> filterMultiplyBlend --> output
        }
  

Комментарии:

1. пробовал, но это не сработало, к входному изображению необходимо применить фильтр непрозрачности.