Image Darkmodifier

by 0qln
5
4
3
2
1
Score: 33/100

Description

The Image Darkmodifier plugin lets you apply visual filters to images directly through your markdown syntax. By using special annotations like @darkmode, @invert, or @transparent, you can transform how embedded images appear - inverting colours, removing white backgrounds, or boosting lightness for better visibility in dark themes. The plugin supports both local and remote image links, inline markdown, and even raw HTML <img> tags. Filters are applied in order from left to right, and users can customise parameters like transparency thresholds or lightness levels using a concise, structured syntax.

Reviews

No reviews yet.

Stats

6
stars
418
downloads
1
forks
195
days
95
days
95
days
5
total PRs
1
open PRs
0
closed PRs
4
merged PRs
14
total issues
11
open issues
3
closed issues
0
commits

Latest Version

README file from

Github

Image Darkmodifier

Obsidian Plugin.

Apply filters, such as darkmode effects (with transparency), to your markdown image links.

This is what it might look like:

No filter: image

With @darkmode filter: image

How to use this?

  1. Add the plugin

  2. Just add the filters to the alias part of your image link:


Normal embed:
`![[image.png|image-description]]`

Embed with darkmode: 
`![[image.png|image-description @darkmode]]`

Where darkmode is essentially just a shorthand for this:
`![[image.png|image-description @invert @transparent(threshold="rgb((13, 13, 13))", remove="below") @boost-lightness(amount=1.2)]]`

The filter are applied in order left to right.

Filter Syntax

will look like this for most cases:

@filter-name(boolean-param, int-param=42, float-param=-6.9, string-param="text-value")

For string values, the following characters have to be written in a special way:

  • " => ""
  • ( => ((
  • ) => ))

Backslashes are not allowed. (Due to how the image-alt is parsed by obsidian.)

All kind's of link notation are supported:

![[image.png | image-description @darkmode]]
![image-description @darkmode | 410](https://raw.githubusercontent.com/0qln/obsidian-image-darkmodifier/HEAD/image.png)
<img src="https://raw.githubusercontent.com/0qln/obsidian-image-darkmodifier/HEAD/image.png" alt="image-description @darkmode" style="height: 410px">

You can even use image links to remote images:

![image @invert](https://i.pinimg.com/736x/fb/74/eb/fb74ebfb80a42e0ae5a26b86d9f2fe47.jpg)

(Note that this requires a network request to fetch the image data.)

The following filters can be used:

Darkmode

Reccomended for use on images with white backgrounds (e.g. screenshots of diagrams in papers).

name: @darkmode params: none.

Default Behavior

By default, always applies dark mode adjustments: inverts the image, removes the background, and boosts the lightness by 1.2.

Essentially just a shorthand for: @invert @transparent(threshold="rgb((13, 13, 13))", remove="below") @boost-lightness(amount=1.2).

Theme Aware Mode

You can enable Theme Aware Mode in the plugin settings. When enabled, the @darkmode filter automatically adapts to Obsidian's current theme:

In Dark Theme:

  • Inverts colors
  • Removes dark backgrounds (below threshold)
  • Boosts lightness by 1.2x

In Light Theme:

  • Keeps original colors (no inversion)
  • Removes bright backgrounds (above threshold ~240)
  • Reduces lightness by 0.85x to increase contrast

Images will automatically re-render when you switch between light and dark themes.

Invert

Inverts the image.

name: @invert params: none.

Lightness boost

Converts the image pixel representation to hsl, and boosts the lightness.

name: @boost-lightness params:

  • amount:
    • float-value: the amount by which to boost the lightness.
Transparency

Make pixels below or above a certain threshold transparent.

name: @transparent params:

  • remove:
    • string-value: can be either "above" or "below"
      • if "above": removes pixels above the threshold
      • if "below": removes pixels below the threshold
  • threshold: all pixels that have r, g and b channels above or below this threshold will be made transparent.
    • int-value: compare all channels to the same threshold
    • string-value: can be any css-parsable string. e.g. "rgb((69, 42, 3))" or "hsl((35deg, 91.7%, 14.1%))" would have the same effect: image

Contributing

Filters

Feel free to open pullrequests or issues. Adding new filters is really straight forward, you can use existing filters for reference.

Mobile support

I don't use Obsidian Mobile myself, so if you want mobile support, feel free to open a PR.

Compatibility

  • Share Note Plugin will use the current image as you see it in Obsidian
  • Theme Detection respects Style Settings Plugin and any Themes such as Encore that support it

Known issues:

  • none so far