MAZANOKE is a simple image optimizer that runs in your browser, works offline, and keeps your images private without ever leaving your device.

Created for everyday people and designed to be easily shared with family and friends, it serves as an alternative to questionable “free” online tools.

See how you can easily self-host it here:
https://github.com/civilblur/mazanoke

-–

Highlights from v1.1.5 (view full release note)

The focus of this release has been to improve the core foundation and file format support, but I’m planning to expand with more features further down the road in order to improve the usefulness of MAZANOKE (while still keeping the UX simple).

  • Support basic authentication for Docker setups.
  • TIFF file format support.
    • Convert from TIFFJPG, PNG, WebP, ICO
  • ICO file format support.
    • Convert from and to an ICO image.

-–

I also feel incredibly honored that MAZANOKE was recently featured on several of my favorite communities:

It’s been incredible to see the growth of the user base, with over 54,000 docker pulls for the previous release alone, and now reaching over 1400 stars! I never anticipated this at all and I’m truly grateful for the support!

I’d like to thank everyone who helped spread the word, whether through starring, word of mouth, community engagement, blog posts, or by packaging it for things like Unraid and NixOS, and everything in between!

  • bieren@lemmy.zip
    link
    fedilink
    English
    arrow-up
    2
    ·
    20 hours ago

    If someone at some random website wants to look at my weirdly specific collection of pictures. Let them.

    • jogai_san@lemmy.world
      link
      fedilink
      English
      arrow-up
      3
      ·
      22 hours ago

      For me this begs the question, why does this question always come up in selfhosted communities? ;)

      For me I like self-hosted apps because I switch between desktop and laptop, and some tools are nice to have on a phone too. This way I pull it in-house, and can use it everywhere. Besides that, there are two other laptops in the house and if I am using those I have the same tools available as well. It its something I need to help the kids with, and they need to use it more often they too can use it regardless of device. Plus its one less thing to install when setting up a new device.

      • alehel@lemmy.zip
        link
        fedilink
        English
        arrow-up
        1
        ·
        22 hours ago

        I didn’t realize this comes up a lot 😅. I’ll restrain myself next time!

    • verstra@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      19 hours ago

      From what I read, it could easily be a tauri app, without a backend: just index.html in your system’s webview.

    • lent9004@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      17 hours ago

      To preface a bit. I occasionally run my images through Sharp over CLI, and I am also a daily user of the Caesium desktop app. However, I haven’t explored the details of how Caesium is implemented.

      The biggest difference is that MAZANOKE targets a different user group, essentilly those who would use online tools over installing applications, which is something you see more of these days. I wanted my family and friends to have a safe drop-in replacement for those shady websites. For those who want to use a “native app”, installing MAZANOKE as a PWA is also a great option.

      In terms of core functionality, they are very similar and support the same output image formats. But at the end of the day, MAZANOKE is privacy-focused too, and have plans to add a simple image editor for obfuscation, cropping, and related features. You can also access MAZANOKE anywhere, whether it is self-hosted or on the official instance.

      Fundamentally, MAZANOKE relies heavily on the device, and the browser’s Canvas API. This means that the speed and quality could slightly differ depending on which device/browser you use. I believe Caesium’s performance would be more consistent.

      (I didn’t know where to put this, but my favorite feature is being able to paste to compress an image right away using MAZANOKE.)

      Edit: typo

    • jogai_san@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      22 hours ago

      Its a hosted tool and everything runs in the browser. It would be interesting to compare results because it could be that c++ is better suited for these kinds of operations.

  • verstra@programming.dev
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 days ago

    Wait, how does this work in-browser? Does it send the photos to the local server where image magick does the job, or is it using javascript to read/write images, or does it contain WASM to do that?

    • verstra@programming.dev
      link
      fedilink
      English
      arrow-up
      6
      ·
      2 days ago

      It’s JavaScript.

      And it is slow, but not as slow as I expected it to be. I’ve optimized a photo I’ve taken with my DSLR, 6.3MB, 24MP, JPEG. It has taken ~50sec on this phone, in Firefox.

      I know, it’s a phone, but also, my phone can and does save, optimize, and apply filters to such images in <1sec.

      • verstra@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        2 days ago

        If you are interested (and can pull together a bit of funding) I can look into how we could do this optimization in WASM.

        • lent9004@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          7
          ·
          2 days ago

          Yes, it’s all JavaScript and essentially relies on the Canvas API to compress the images, so the performance is heavily dependent of your device and browser. I haven’t delved into WASM yet, but it would indeed open up doors for improvements, such a more file format support and more intelligent optimization. At the moment, working with canvas keeps things a lot more straightforward, however.

          There is no funding I can provide at all (I’ve received 2 donations so far, which I’m very grateful for!). I just do this on my spare time, which I have a lot less of these days. I initially created MAZANOKE as a drop-in replacement for family and friends, specifically to those who tend to use questionable or ad-bloated online tools.

          • verstra@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            19 hours ago

            If you do delve into improving the performance, I suggest using Rust and no_std crates for dealing with images, such as https://docs.rs/zune-jpeg/latest/zune_jpeg/.

            It would probably take some time to get it working, but it would probably increase performance and support any format you can find a crate for. But it does not seem like it’s worth it.

            I’ll add this to my list of “things I might to when I don’t have a side project to waste my time on” :D

            • lent9004@lemmy.worldOP
              link
              fedilink
              English
              arrow-up
              1
              ·
              17 hours ago

              Thanks for your kind words, I tried putting some effort into making the interface a bit more fun and interactive, so thanks for noticing!

              In regards to Rust, I’ve been interested in learning more about it, but I’ve not had time yet, so it’s been in a “soon ™” limbo. As I’m comfortable with JavaScript/JS frameworks, sticking with JS was a quick way to get started without much friction.

              • verstra@programming.dev
                link
                fedilink
                English
                arrow-up
                1
                ·
                17 hours ago

                Rust will take time - it has a few concept that I haven’t seen in javascript/python/java/C++ family of languages. But it gives “zero-cost abstractions” i.e. a way to write high-level code without any performance penalty. And it has great tooling and WASM support, which is what you’d be after.

                But as I said, it is all not worth it now, just for this application.

                • lent9004@lemmy.worldOP
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  16 hours ago

                  That’s still very interesting to hear, maybe I’ll look into it for my next (simpler) project just to try it out.

  • milicent_bystandr@lemm.ee
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 day ago

    Thanks!

    Does this really need docker, if it’s all in-browser? Ultimately, is it just served as files from your self-hosted server and the client browser does the magic?

    • lent9004@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      5
      ·
      1 day ago

      Correct! This all works in the browser offline. As outlined in the install instructions, you can simply download the project files and just launch index.html. The docker setup is if you want to be able to access the service on local network or share it publicly.

  • baconman1945@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 day ago

    by packaging it for things like Unraid

    Thanks for thinking of us beginners!

    What’s the name mean?

    • lent9004@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 day ago

      The unofficial unraid template was graciouslly provided by ctrlaltd1337ed, but I appreciate the sentiment.

      About the name, It is an amalgamation of two words, I’ll leave the rest to your imagination!