GPUImage Chroma Key - экспорт PNG-файла с Альфа - PullRequest
0 голосов
/ 23 октября 2018

Используя GPUImage2 в Swift (цели Xcode, MacOS и iOS), я успешно делаю фотографию зеленого экрана в качестве PictureInput, подключая его к фильтру ChromaKeying и фильтру AlphaBlend.Подключая PictureOutput, я затем обрабатываю изображение и сохраняю PNG-файл результата.Результат подтверждает, что после хроматического фильтра есть альфа-канал, который корректно смешивается с фоновым изображением.Таким образом, все работает хорошо с конфигурацией фильтра.

background --> blend
picture --> chroma --> blend --> output

Моя цель, однако, состоит в том, чтобы сгенерировать UIImage / NSImage (опционально экспортируется в файл PNG с альфа-каналом) только входного изображения с удаленным зеленым фономИ альфа-канал, который был добавлен с помощью фильтра Chroma.Настройка проста, но я не могу найти способ вывести изображение из домена GPUImage без потери альфа-канала.Я подозреваю, что он теряется при использовании PictureOutput.imageAvailableCallback, который обрабатывает изображение GPUImage и возвращает NSImage.

picture --> chroma --> output

output.encodedImageFormat = .png
var outputImage: NSImage?
output.imageAvailableCallback = { image in
    outputImage = image
}
picture.processImage(synchronously: true)
// Output Image is ready for use or exporting to a file

Мои вопросы:

  1. Существует ли дополнительная конфигурация цепочки фильтров или PictureOutput, необходимая для полного переноса альфа-канала в отображаемое изображение?

  2. Есть ли другой метод вывода, который я должен использовать, чтобы получить данные визуализированного изображения, которые затем можно преобразовать в NS / UIImage?

Примечание: я обнаружил обсуждение проблемы на GitHub после публикации - https://github.com/BradLarson/GPUImage2/issues/44

...