acv-tonecurve

1.0.1 • Public • Published

ACV-TONECURVE

Build Status MIT License

Japanese

About

Module for adapting AdobePhotoshop tone curve preset files to image binary pixel data in Node.js.

It is built with TypeScript and requires no exceptional build.
It can be installed with the following commands.

npm i acv-tonecurve

Sample

Please install node-canvas module.

npm i canvas

Easy to use.
First, when instantiating AcvToneCurve, pass the filename as an argument.
Then pass the binary data obtained from the image data to the doCurves function.
Pass the rewritten data against the ctx context and rewrite canvas.

TypeScript

import AcvToneCurve from "acv-tonecurve";
import * as Canvas from "canvas";
import fs from "fs";

const Image = Canvas.Image;

const toneCurve = new AcvToneCurve("./test/tone.acv");

const loadImageSync = (file: string) =>
  new Promise<Canvas.Image>((resolve, reject) => {
    try {
      const img = new Image();

      img.onload = () => {
        resolve(img);
      };

      img.src = fs.readFileSync(file);
    } catch (e: any) {
      reject(e);
    }
  });

test("test", async () => {
  const canvas = new Canvas.Canvas(1000, 1000);
  const ctx = canvas.getContext("2d");
  ctx.globalAlpha = 1;
  ctx.globalCompositeOperation = "source-over";
  ctx.beginPath();
  ctx.fillStyle = "rgb( 255,255, 255)";
  ctx.fillRect(0, 0, canvas.width, canvas.height);

  const img = await loadImageSync("./test/image.png");

  ctx.drawImage(img, 0, 0);

  const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);

  toneCurve.doCurves(imageData.data);

  ctx.putImageData(imageData, 0, 0);

  console.log(canvas.toBuffer());
});

JavaScript

const AcvToneCurve = require("acv-tonecurve");
const Canvas = require("canvas");
const fs = require("fs");

const Image = Canvas.Image;

const toneCurve = new AcvToneCurve.AcvToneCurve("./test/tone.acv");

const loadImageSync = (file) =>
  new Promise((resolve, reject) => {
    try {
      const img = new Image();

      img.onload = () => {
        resolve(img);
      };

      img.src = fs.readFileSync(file);
    } catch (e) {
      reject(e);
    }
  });

test("test", async () => {
  const canvas = new Canvas.Canvas(1000, 1000);
  const ctx = canvas.getContext("2d");
  ctx.globalAlpha = 1;
  ctx.globalCompositeOperation = "source-over";
  ctx.beginPath();
  ctx.fillStyle = "rgb( 255,255, 255)";
  ctx.fillRect(0, 0, canvas.width, canvas.height);

  const img = await loadImageSync("./test/image.png");

  ctx.drawImage(img, 0, 0);

  const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);

  toneCurve.doCurves(imageData.data);

  ctx.putImageData(imageData, 0, 0);

  console.log(canvas.toBuffer());
});

Resources

Here is a list of resources we consulted in creating acv-tonecurve.
We are very grateful to them.

Monotonic Spline Curves - http://blog.mackerron.com/2011/01/01/javascript-cubic-splines/
jQuery-filter.me - https://github.com/MatthewRuddy/jQuery-filter.me

Change

  • 04/28/2022 Fixed a bug that caused an error when requiring as JS.

Readme

Keywords

Package Sidebar

Install

npm i acv-tonecurve

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

1.56 MB

Total Files

22

Last publish

Collaborators

  • nagifuyumi