(alpha) Image Annotator - Annotate images right inside the previewer!

(no audio)

Image Annotator (alpha/preview)

Repo: https://github.com/labofoz/discourse-image-annotator
Install Branch: discourse
Component size: ~42Kb
Dependes on Marker.js: see their license (requires attribution or purchase)

So I’ve been using my Discourse as a hackable Evernote alternative, but one of the features I really miss is image annotation. This Discourse Theme Component adds Marker.js to your topic previewer, making it so that whenever you click on an image it activates “Annotation Mode”, allowing you to:

  • Add boxes, shapes, arrows, and text
  • Highlight or censor parts of the image
  • Copy the annotated image to clipboard
  • Paste the image back into the editor, allowing to either keep or delete the original
  • Mobile support soon

Because you copy the image from the previewer back into the editor, it’ll automatically upload the edited image as any other copy/pasted image!

There aren’t any optimizations yet and it’s basically just a bundled copy of the Marker.js repo. There might be bugs and I’m still evaluating different annotation libraries, but that’s the sneak peak!

Install Screen

I’m still experimenting so for now make sure to use the discourse branch, as the main branch is where the main source is (I’ll fix this soon):



Wow, that looks incredibly useful - I could imagine it has more uses than simply annotating (memes :wink: ). Excellent, I’m super proud and impressed of the continuous stream of talent and innovation that’s coming from the Discourse community! :trophy:


As if you brought MS Paint into Discourse :slight_smile: This looks really good.


Very cool! can this be done without the cut-paste step at the end? Just trigger the upload direct once editing is done?


Yeah, this is the only hindrance I see.

1 Like

Sounds awesome! This is going to be added to our forum soon! I think it might be cool if you can crop images. Anyways, great job @labofoz! Though, I do understand this is a theme component for annotating.


That’s a great point! I think it’s definitely possible but I think I’m going to do a more complete discourse integrated one from scratch over the weekend. I have a few other components I’m working on and I’d like to just reuse the dependencies Discourse already has.

The more I experiment the more I think I can get this down to just a few Kb vs 42, and with better integration and mobile support!

That’s a great point and definitely on my mind, I wanted to drag and drop collages together on the go so I’ll give this a try over the weekend too!


Incredible. Love it!

1 Like

Very cool! I would love to use this, it has a lot of glitches but I’ll hold back feedback if you’re going to re-write it from scratch. Would love to see cropping as well. Looking forward to see where this goes :+1:


Thanks! I released this a bit early to collect feedback ahead of time so feel free to list anything you find

Cropping is a great suggestion (especially for mobile users), so I’ve added that to my todo! I should have the first production ready version by eod Sunday. I’m just planning everything out now because I’d like it to be super simple for end users to use (like it’s not even there)


It’s just a bit clunky right now, like the toolbar doesn’t always show up, the annotations move when you scroll, sometimes a new annotation doesn’t appear in the visible window and you have scroll down or make the composer bigger to find it. The finish checkbox does nothing for me, so the copy/paste functionality doesn’t work. If you close the composer window the annotation still stays until you X out of the annotation bar.


Thanks that’s good feedback, I’m just going to do it from scratch as it would be less work for me than debugging it. There’s definitely some interest so I’ll work on a new version with everyone’s feedback over the weekend!


Hi! Nice plugin!

But it’s not working on our community :sweat_smile:
Console reports this:

/theme-javascripts/03bd904a31a109db9cd635a25a5c572d54442e65.js?__ws=community.kodular.io:2 Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
    at Image.a.onload (https://community.kodular.io/theme-javascripts/03bd904a31a109db9cd635a25a5c572d54442e65.js?__ws=community.kodular.io:2:3725)

Any idea what can be causing this?

Hi, thanks for reporting this! From that alone I wouldn’t be able to tell, but I should have the newer version out either tonight or tomorrow (probably tomorrow)

I mostly made this for myself using off the shelf tools just to see if the idea would work out, so I didn’t test this too much. I’ll post back when I have the update (which will probably be quicker to fix anyways :sweat_smile: )


Hey everyone, I’m still working on this but I’ve been trying to find a job too so I’m a little behind. I ended up learning the Discourse API and moved everything into a modal so that it’ll work on mobile devices too, is compatible with whatever theme you already have, and should be future compatible with Discourse.

I’ve also made progress on autosaving, which you can see in this video. The project will also be less than 5kb (since it uses Discourse’s core dependencies) and I’m trying to learn best practices, so you’ll have plugin hooks etc if you’d like to extend the annotator.

I should have this ready for sure by Sunday, but just wanted to give a quick update!


Hi @labofoz, has there been any updates on this? It seems that your github link is broken, and I couldn’t find your username there, either.

Temporary moved to the #theme:broken-theme category until the component is fixed.


I loved this theme, and I want to keep using it. @labofoz can you update the link or was the repository removed?


Would love to see this resuscitated!

this feature would be great