У меня на java получилось, там стразу из процесса можно получить инпутстрим и с пмомщью ImageIO разобрать поток на фреймы, а вот в потоки на скала пока никак не заверну.
А что за библиотека? Коты, зио? Скорее всего тебе нужно конвертировать твой стрим в джавовый InputStream. Поскольку ты у тебя видимо цикл который читает imageio, то его можно конвертнуть в итератор, а тот снова в стрим. И все это зафлетмапить, чтобы на выходе был Stream[image]
Коты, но это не сильно принципиально. Получится на одном получится и на другом. В стрим могу конвертировать например через pipe fs2.io.toInputStream, как потом из такого цикла можно сделать итератор, чтобы потом получить стрим? val iis = ImageIO.createImageInputStream(in) val r = ImageIO.getImageReaders(iis).next() r.setInput(iis) var i = 0 while (true) { val img = r.read(i) i = i + 1 }
Подойдет Stream.unfold
Должно буквально получиться (data through toInputStream).flatMap(iis => Stream.unfold(makeReader(iis))(reader => if available Some(reader.read) else None)
Примерно так и получается только в read нужно все время индекс передавать. чтобы дальше читать.
А ну да, там как в foldLeft можно и счетчик вместе с ридером прокидывать
Неверное решение. Не шортсирквит
Обсуждают сегодня