GithubHelp home page GithubHelp logo

kentaro-m / catchy-image Goto Github PK

View Code? Open in Web Editor NEW
47.0 2.0 3.0 4.93 MB

:art: A Node.js module for dynamically generating social cards (open graph images).

Home Page: https://www.npmjs.com/package/catchy-image

License: MIT License

JavaScript 99.13% Dockerfile 0.87%
twitter-cards nodejs open-graph open-graph-protocol my-portfolio

catchy-image's Introduction

catchy-image

npm node npm GitHub license

A Node.js module for dynamically generating Open Graph images.

๐ŸŽจ Example

It can create an image like this by using the module.

An Open Graph image

โ–ถ๏ธ Usage

Executing this module requires Node v12.

Install a package using the npm CLI.

$ npm install --save catchy-image

Write codes for importing a module, setting up options for generating an image, and executing a module.

const catchy = require('catchy-image')

async function run() {
    const options = {
      output: {
        directory: '',
        fileName: 'thumbnail.png',
      },
      image: {
        width: 1200,
        height: 630,
        backgroundColor: '#222639',
        // backgroundImage: require.resolve('./images/background.jpg'),
      },
      style: {
        title: {
          fontFamily: 'Noto Sans CJK JP',
          fontColor: '#bb99ff',
          fontWeight: 'bold',
          fontSize: 64,
          paddingTop: 100,
          paddingBottom: 200,
          paddingLeft: 150,
          paddingRight: 150,
        },
        author: {
          fontFamily: 'Noto Sans CJK JP',
          fontColor: '#f0f5fa',
          fontWeight: '400',
          fontSize: 42,
        },
      },
      meta: {
        title: 'How to dynamically create  an Open Graph image.',
        author: 'Kentaro Matsushita',
      },
      fontFile: [
        {
          path: require.resolve('./fonts/NotoSansCJKjp-Bold.otf'),
          family: 'Noto Sans CJK JP',
          weight: 'bold',
        },
        {
          path: require.resolve('./fonts/NotoSansCJKjp-Regular.otf'),
          family: 'Noto Sans CJK JP',
          weight: '400',
        },
      ],
      iconFile: require.resolve('./images/avatar.jpeg'),
      timeout: 10000,
    }

    const output = await catchy.generate(options)
    console.log(`Successfully generated: ${output}`)
  } catch (error) {
    console.error(error)
  }
}

run()

โš™๏ธ Options

Output

name required description
directory true directory path to output an image.
fileName true file name to output an image.

Image

name required description
width true width of a generated image.
height true height of a generated image.
backgroundColor true hex value for background color.
backgroundImage image path using as the background (specify relative path).

Style

Title

name required description
fontFamily true font family for title text
fontColor true hex value for text color.
fontWeight true font weight for title text.
fontSize true font size for title text.
paddingTop true height of the padding area on the top of a title text.
paddingBottom true height of the padding area on the bottom of a title text.
paddingLeft true width of the padding area on the left of a title text.
paddingRight true width of the padding area on the right of a title text.

Author

name required description
fontFamily true font family for author text
fontColor true hex value for text color.
fontWeight true font weight for author text.
fontSize true font size for author text.

Meta

name required description
title true title text to be placed on the image.
author true author text to be placed on the image.

Font File

name required description
path true file path of font data (specify relative path).
family true font family name to register custom font to this module.
weight true font weight to register custom font to this module.

Icon File

name required description
iconFile true file path of icon to be placed on the image.

Timeout

name required description
timeout true the number of milliseconds to wait until complete the process.

๐Ÿ‘ท Development

$ npm install
# Execute an example script (src/example.js)
$ npm run build && npm run dev

Tests

$ docker build -t snapshot-test:0.1.1 .
$ docker run -v `pwd`/test:/usr/src/app/test snapshot-test:0.1.1

๐Ÿ“ Licence

MIT

โค๏ธ Acknowledgments

Inspired by @shuhei's article.

Generating Twitter Card Images from Blog Post Titles - Shuhei Kagawa

catchy-image's People

Contributors

kentaro-m avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.