Files
orx/orx-jvm/orx-runway/src/demo/kotlin/DemoCaptionToImage02.kt
2021-06-22 11:08:07 +02:00

39 lines
1.5 KiB
Kotlin

import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.ColorBuffer
import org.openrndr.draw.loadFont
import org.openrndr.extra.runway.AttnGANRequest
import org.openrndr.extra.runway.AttnGANResult
import org.openrndr.extra.runway.runwayQuery
import java.io.File
/**
* This demonstrates a text to image network. It generates images from simple sentences.
* This example requires a `runway/AttnGAN` model to be active in Runway.
*/
suspend fun main() = application {
configure {
width = 768
height = 576
}
program {
val runwayHost = "http://localhost:8000/query"
val nouns = File("demo-data/words/nouns.txt").readText().split("\n")
val prepositions = File("demo-data/words/prepositions.txt").readText().split("\n")
val adjectives = File("demo-data/words/adjectives.txt").readText().split("\n")
val font = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 36.0)
extend {
val text = "a ${adjectives.random()} ${nouns.random()} ${prepositions.random()} a ${adjectives.random()} ${nouns.random()}"
val result: AttnGANResult = runwayQuery(runwayHost, AttnGANRequest(text))
val image = ColorBuffer.fromUrl(result.result)
drawer.fontMap = font
drawer.image(image, (width - image.width) / 2.0, (height - image.height) / 2.0)
drawer.fill = ColorRGBa.PINK
drawer.text(text, 40.0, height - 40.0)
image.destroy()
}
}
}