123456789101112131415161718192021222324252627282930 |
- #!/usr/bin/env python3
- from nicegui import ui
- img_src = 'https://i.stack.imgur.com/PpIqU.png'
- mask_src = 'https://i.stack.imgur.com/OfwWp.png'
- with ui.row().classes('w-full flex items-center'):
- ui.image(img_src).style('width: 25%')
- ui.label('+').style('font-size: 18em')
- ui.image(mask_src).style('width: 25%')
- ui.label('=').style('font-size: 18em')
- image = ui.interactive_image(img_src).style('width: 25%')
- image.content = f'''
- <image xlink:href="{mask_src}" width="100%" height="100%" x="0" y="0" filter="url(#mask)" />
- <filter id="mask">
- <feComponentTransfer>
- <feFuncR type="linear" slope="40" intercept="-(0.5 * 40) + 0.5"/>
- <feFuncG type="linear" slope="40" intercept="-(0.5 * 40) + 0.5"/>
- <feFuncB type="linear" slope="40" intercept="-(0.5 * 40) + 0.5"/>
- <feFuncR type="linear" slope="1000"/>
- </feComponentTransfer>
- <feColorMatrix type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 3 -1 -1 0 0" />
- </filter>
- '''
- ui.markdown(
- 'Images where discovered through <https://stackoverflow.com/a/57579290/364388>. '
- 'SVG filters where used to colorize the mask. You may want to check out <https://webplatform.github.io/docs/svg/tutorials/smarter_svg_filters/>.'
- ).classes('mt-4')
- ui.run()
|