MCPcopy Index your code
hub / github.com/MattKetmo/darkroomjs

github.com/MattKetmo/darkroomjs @v2.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0.1 ↗ · + Follow
12 symbols 15 edges 11 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

DarkroomJS

DarkroomJS is a JavaScript library which provides basic image editing tools in your browser, such as rotation or cropping. It is based on the awesome FabricJS library to handle images in HTML5 canvas.

Demo

Try the online demo at http://mattketmo.github.io/darkroomjs

The library is currently work in progress. I know there is some bug especially when resizing the crop zone. Feel free to fork the project or report issues on GitHub. All ideas are also welcome.

Building

  • Install Node & npm.
  • Run npm install to build dependencies.
  • Run npm start to build the assets and start the demo webserver.

Usage

Simply instanciate a new Darkroom object with a reference to the image element:

<img src="https://github.com/MattKetmo/darkroomjs/raw/v2.0.1/some-image.jpg" id="target">
<script>
  new Darkroom('#target');
</script>

You can also pass some options:

new Darkroom('#target', {
  // Canvas initialization size
  minWidth: 100,
  minHeight: 100,
  maxWidth: 500,
  maxHeight: 500,

  // Plugins options
  plugins: {
    crop: {
      minHeight: 50,
      minWidth: 50,
      ratio: 1
    },
    save: false // disable plugin
  },

  // Post initialization method
  initialize: function() {
    // Active crop selection
    this.plugins['crop'].requireFocus();

    // Add custom listener
    this.addEventListener('core:transformation', function() { /* ... */ });
  }
});

Why?

It's easy to get a javascript script to crop an image in a web page. But if your want more features like rotation or brightness adjustment, then you will have to do it yourself. No more jQuery plugins here. It only uses the power of HTML5 canvas to make what ever you want with your image.

The concept

The library is designed to be easily extendable. The core script only transforms the target image to a canvas with a FabricJS instance, and creates an empty toolbar. All the features are then implemented in separate plugins.

Each plugin is responsible for creating its own functionality. Buttons can easily be added to the toolbar and binded with those features.

Contributing

Run npm develop to build and watch the files while developing.

License

DarkroomJS is released under the MIT License. See the bundled LICENSE file for details.

Core symbols most depended-on inside this repo

Shape

Function 12

Languages

TypeScript100%

Modules by API surface

lib/js/core/ui.js3 symbols
lib/js/core/utils.js2 symbols
lib/js/core/transformation.js2 symbols
lib/js/core/plugin.js2 symbols
lib/js/core/darkroom.js2 symbols
gulpfile.js1 symbols

For agents

$ claude mcp add darkroomjs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page