# gulp-gm

> Image manipulation with GraphicsMagick for gulp.

Latest version **0.0.9** (published 2018-03-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install gulp-gm
pnpm add gulp-gm
yarn add gulp-gm
bun add gulp-gm
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.9 |
| Published | 2018-03-28 |
| First published | 2014-03-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 167.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 24 |
| Author | Norman Rzepka |
| Maintainers | normanrz |
| Keywords | gulpplugin, gulpfriendly, graphicsmagick, image |

## Links

- npm: https://www.npmjs.com/package/gulp-gm
- Repository: https://github.com/scalableminds/gulp-gm
- Issues: https://github.com/scalableminds/gulp-gm/issues
- npm.io page: https://npm.io/package/gulp-gm

## Dependencies (3)

- [gm](https://npm.io/package/gm.md) ^1.14.2
- [through2](https://npm.io/package/through2.md) ^0.4.1
- [plugin-error](https://npm.io/package/plugin-error.md) ^1.0.1

## Alternatives

- [exif-parser](https://npm.io/package/exif-parser.md) — 3.8M weekly downloads
- [vite-plugin-compression](https://npm.io/package/vite-plugin-compression.md) — 569.5K weekly downloads
- [pica](https://npm.io/package/pica.md) — 442.4K weekly downloads
- [@reportportal/client-javascript](https://npm.io/package/@reportportal/client-javascript.md) — 408.8K weekly downloads
- [@tldraw/state](https://npm.io/package/@tldraw/state.md) — 316.0K weekly downloads

## Recent versions

- 0.0.9 (latest) — 2018-03-28
- 0.0.8 — 2015-08-25
- 0.0.7 — 2014-08-11
- 0.0.6 — 2014-07-20
- 0.0.5 — 2014-07-08
- 0.0.4 — 2014-07-08
- 0.0.3 — 2014-03-13
- 0.0.2 — 2014-03-13
- 0.0.1 — 2014-03-13

## README

# [gulp](https://github.com/gulpjs/gulp)-gm [![Build Status](https://travis-ci.org/scalableminds/gulp-gm.svg?branch=master)](https://travis-ci.org/scalableminds/gulp-gm)

> Image manipulation with [gm](https://github.com/aheckmann/gm). Refer to [gm's documentation](http://aheckmann.github.io/gm/docs.html) for details.


# Install

Install with [npm](https://npmjs.org/package/gulp-gm)

```
npm install --save-dev gulp-gm
```

### GraphicsMagick or ImageMagick
`gulp-gm` works best with GraphicsMagick.  
However, it also supports ImageMagick, but you'll need to set the option `imageMagick: true`.

Make sure GraphicsMagick or ImageMagick is installed on your system and properly set up in your `PATH`.

Ubuntu:

```shell
apt-get install imagemagick
apt-get install graphicsmagick
```

Mac OS X (using [Homebrew](http://brew.sh/)):

```shell
brew install imagemagick
brew install graphicsmagick
```

Windows & others:
- GraphicsMagick: [http://www.graphicsmagick.org/download.html](http://www.graphicsmagick.org/download.html)
- ImageMagick: [http://www.imagemagick.org/script/binary-releases.php](http://www.imagemagick.org/script/binary-releases.php)

Confirm that GraphicsMagick or ImageMagick is properly set up by executing `gm -version` or `convert -version` in a terminal.


## Example

```js
var gulp = require('gulp');
var gm = require('gulp-gm');

gulp.task('default', function () {
  gulp.src('test.png')

    .pipe(gm(function (gmfile) {

      return gmfile.resize(100, 100);

    }))

    .pipe(gulp.dest('dist'));
});
```

### Convert png to jpg

```js
gulp.src('test.png')
  .pipe(gm(function (gmfile) {

    return gmfile.setFormat('jpg');

  }))
  .pipe(gulp.dest('dist'));
```

### Async manipulation

```js
gulp.src('test.png')
  .pipe(gm(function (gmfile, done) {

    gmfile.size(function (err, size) {

      done(null, gmfile
        .stroke("blue", 6)
        .fill("transparent")
        .drawRectangle(0, 0, size.width, size.height));

    });

  }))
  .pipe(gulp.dest('dist'));
```

### Using ImageMagick

```js
gulp.src('test.png')

  .pipe(gm(function (gmfile) {

    return gmfile.resize(100, 100);

  }, {
    imageMagick: true
  }))

  .pipe(gulp.dest('dist'));
```

## API

### gm(modifier, options)

#### modifier(gmfile, [done])

Type: `Function`

Supply a callback that manipulates the image. The first argument will the `gm` object with all original properties. [Read more in the gm documentation](http://aheckmann.github.io/gm/docs.html).

##### Sync
Make sure to return your modified `gm` object.

```js
gulp.src('test.png')
  .pipe(gm(function (gmfile) {
    return gmfile.blur(10);
  }))
  .pipe(gulp.dest('dist'));
```

##### Async
If your call back accepts a second argument (`done`), it will be treated asynchronously. Your code will then need to call `done(err, gmfile)` at some point.

```js
gulp.src('test.png')
  .pipe(gm(function (gmfile, done) {
    gmfile.size(function (err, size) {

      done(null, gmfile.resize(
        size.width * 0.5,
        size.height * 0.5
      ));

    });
  }))
  .pipe(gulp.dest('dist'));
```


#### options.imageMagick

Type: `Boolean`
Default value: `false`

Set to `true` when using ImageMagick instead of GraphicsMagick.


## Known Issues

* `gm.thumb(...)` is not supported because it writes to the file system directly. Consider using [gulp-image-resize](https://github.com/scalableminds/gulp-image-resize) instead.


## Tests

1. You need both ImageMagick and GraphicsMagick installed on your system to run the tests.
2. Install all npm dev dependencies `npm install`
3. Install gulp globally `npm install -g gulp`
4. Run `gulp test`


## License

MIT © [scalable minds](http://scm.io)

---
_Source: https://npm.io/package/gulp-gm · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
