1.1.0 • Published 5 years ago

apl-image-packer v1.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Simple image/box packer

A lightweight function that takes a set of dimensions and packs them as best it can producing a list of positions. Useful if you want to perform your own rendering via WebGL/Canvas etc.

Features

  • Fast (can pack 1000 boxes of variable dimensions in ~20ms on an i7-2600)
  • No dependencies, very small footprint (~3KB minified)
  • Generated atlas designed to be as square as possible
  • Typescript definitions provided

example output

How to use

import { createAtlas } from 'apl-image-packer';

interface customObj {
  width: number;
  height: number;
  name: string;
}

const atlas = createAtlas<customObj>([
  {
    width: 100,
    height: 200,
    name: 'one'
  },
  {
    width: 450,
    height: 300,
    name: 'two'
  }
]);

/* atlas contains:
{
  coords: [
    {
      //the coordinates for the box
      x: 120,
      y: 140,
      
      //the original object provided (can contain more properties if needed)
      img: {
        width: 100,
        height: 200
      }
    },
    ...
  ],
  //the dimensions of the containing box
  width: 550,
  height: 456
}
*/

Using in node

Install via npm install apl-image-packer, then import via ES6 Modules:

import { createAtlas } from 'apl-image-packer';

Using in the browser

Add the script tag below or download it an bundle it with your own scripts.

<script src="http://unpkg.com/apl-image-packer/lib/apl-image-packer.min.js"></script>

API

Interfaces

ImagePackerDimension

An object that should be provided to specify the dimensions of the box you want to pack. Other properties can and should be used, i.e. the src to the image

NameTypeDescription
widthnumberThe width of the image
heightnumberThe height of the image

ImagePackerAtlas

Contains the list of coordinates and result dimensions of the atlas.

NameTypeDescription
coordsArray\List of coordinates for the boxes in the atlas (not same order as original list)
widthnumberThe width of the atlas
heightnumberThe height of the atlas

ImagePackerCoord

Links back to the dimension object provided, defines the x and y position to insert the box into the atlas.

NameTypeDescription
xnumberThe x position to insert into the atlas (from the left)
ynumberThe y position to insert into the atlas (from the top)
imgImagePackerDimensionThe original object that was given with the dimensions (can contain more properties)

Classes

ImagePacker

The main class used to create the atlas

MethodDescriptionParamatersReturn Type
createAtlasCreates the atlas from the provided list of dimensionsimgs: Array\<ImagePackerDimension>atlas: ImagePackerAtlas

Licence

All code is licenced under MIT.

1.1.0

5 years ago

1.0.1

6 years ago

1.0.0

6 years ago