$30 off During Our Annual Pro Sale. View Details »

EbitengineでGUIツール作ってみた

aethiopicuschan
September 22, 2023

 EbitengineでGUIツール作ってみた

1. 簡潔に自己紹介
2. Odoriの紹介
3. ebiten.Imageを使ってGIFアニメを作成するには
4. 応用デモ

https://github.com/aethiopicuschan/odori

aethiopicuschan

September 22, 2023
Tweet

Other Decks in Programming

Transcript

  1. Ebitengine ϓνConf #1 1/9
    aethiopicuschan 2023/09/22
    EbitengineͰGUIπʔϧ


    ࡞ͬͯΈͨ

    View Slide

  2. Ebitengine ϓνConf #1 2/9
    aethiopicuschan 2023/09/22
    ؆ܿʹࣗݾ঺հ
    ීஈ͸ҩྍܥϕϯνϟʔͰαʔόαΠυΤϯδχΞΛ΍͍ͬͯ·͢ɻ


    ࢓ࣄͰ͸PythonΛ࢖͏͜ͱ͕ଟ͍Ͱ͕͢ɺϓϥΠϕʔτͩͱGolang͹͔ͬΓɻ


    X(Twitter)΍GitHubͳͲ͢΂ͯ aethiopicuschan ͱ͍͏໊લͰ΍͍ͬͯ·͢ɻ


    วྺ


    HSP -> ncurses -> Akashic Engine -> Ebitengine


    View Slide

  3. Ebitengine ϓνConf #1 3/9
    aethiopicuschan 2023/09/22
    Odori

    View Slide

  4. Ebitengine ϓνConf #1 4/9
    aethiopicuschan 2023/09/22
    Odori
    ύϥύϥອըͷΑ͏ͳܗͰγϯϓϧͳΞχϝʔγϣϯΛ࡞੒͢ΔGUIπʔϧɻ


    github.com/aethiopicuschan/odori


    ݟͤͨํ͕ૣ͍ͷͰσϞΛ͠·͢ɻ

    View Slide

  5. Ebitengine ϓνConf #1 5/9
    aethiopicuschan 2023/09/22
    GIFग़ྗ
    GIFϑΝΠϧ͕ѻ͑Δ৭ͷ਺͸256৭·Ͱɻ


    ebiten.Image͔Βcolor.Paletteͱimage.PalettedΛ࡞Δඞཁ͕͋Δɻ


    ͍͍ײ͡ʹݮ৭͢Δ͔ɺimage/color/paletteʹ͋ΔPlan9/WebSafeΛ࢖͏ɻ


    OdoriͰ͸ github.com/soniakeys/quant Λར༻ɻ

    View Slide

  6. Ebitengine ϓνConf #1 6/9
    aethiopicuschan 2023/09/22
    GIFग़ྗ
    img := ebiten.NewImage(100, 100)


    img.DrawImage(hoge, op)


    q := median.Quantizer(256)


    p := color.Palette{image.Transparent}


    p = append(p, q.Quantize(make(color.Palette, 0, 255), img)...)


    paletted := image.NewPaletted(img.Bounds(), p)


    draw.Draw(paletted, paletted.Rect, img, image.Point{0, 0}, draw.Src)


    ͱΓ͋͑ͣ image.Paletted Λ΍͍ͬͯ͘ɻ

    View Slide

  7. Ebitengine ϓνConf #1 7/9
    aethiopicuschan 2023/09/22
    GIFग़ྗ
    outGif := &gif.GIF{}


    outGif.Image = append(outGif.Image, paletted)


    outGif.Delay = append(outGif.Delay, 100)


    outGif.Disposal = append(outGif.Disposal, gif.DisposalBackground)


    ࡞ͬͨ paletted Λ gif.GIF ʹ٧ΊΔɻ


    Delay͸ 1/100ඵͳͷͰɺ࣮ࡍʹ͸ TPS Λݩʹม׵ͨ͠Γ͢Δɻ


    Disposal͸ DisposalBackground ʹ͓͚ͯ͠͹ͱΓ͋͑ͣ҆৺Ͱ͖Δɻ

    View Slide

  8. Ebitengine ϓνConf #1 8/9
    aethiopicuschan 2023/09/22
    GIFग़ྗ
    ͓·͚: Disposalൺֱ
    DisposalNone DisposalBackground

    View Slide

  9. Ebitengine ϓνConf #1 9/9
    aethiopicuschan 2023/09/22
    GIFग़ྗ Ԡ༻
    ebiten.ImageΛݩʹGIFΞχϝ͕࡞ΕΔ͜ͱ͕Θ͔ͬͨɻ


    = ήʔϜʹ࿥ըػೳΛ෇͚Δ͜ͱ͕Ͱ͖Δʂ


    (ߟ͑ͳ͚Ε͹͍͚ͳ͍͜ͱ͕͍ͩͿ૿͑Δ͕…)


    σϞΛ΍Γ·͢ɻ

    View Slide