video-resolutions !Build Statustravis badgetravis link !Coverage Statuscoveralls badgecoveralls link
The data come from this Wikipedia page:
en.wikipedia.org/wiki/ListofcommonresolutionswikipediaExample
import resolutions from 'video-resolutions';
/* some script playing with a video object */
const compatibleAspects = resolutions.getMatchingAspect(
resolutions.getOne({
width: video.width,
height: video.height
})
);
/* for 4096×2160, it returns: */
[
Format {
code: 'DCI_2K',
name: 'DCI 2K',
fullName: 'DCI 2K (DCI 2K)',
alternativeNames: [],
width: 2048,
height: 1080,
aspects: {
storage: Aspect { string: '256:135', float: 1.8962962962962964 },
display: Aspect { string: '1.90:1', float: 1.9 },
pixel: Aspect { string: '1.002', float: 1.002 }
}
}
]
Installation
$ npm install -D video-resolutions
Usage
This package export this list of classes and functions:Aspect
- A class representing an aspect-ratioFormat
- A class representing an image formatgetList
- Get the list of the 184 formatsgetAll
- Get a list of formats matching a query object (eg.
getOne
- Returns the best result ofgetAll
or create
getMatchingAspect
- Get a list
search
- Search a list of formats matching a query stringsearchOne
- Returns the best result ofsearch
ornull
Notice: All the getters and searchers results are always a copy of database items so you can edit them without damaging database data.
Format
Each format code
is either an unique string or null
.Each format
resolution
unique.The
Format
class has a getter resolution
returning a string of the width
and height merged around a "×" symbol, and a getter pixelCount
returning the
multiplication of the number of pixels of width and height.aspect
is always a shorthand for aspects.storage
, either as a getter of
the Format
class or in a query object.You can use the methods
setWidth(width)
and setHeight(height)
to edit a
format width or height. The respectives height or width will be adapted to this
change to match the aspect-ratio. By changing width or height, the format will
lose its code
, name
, fullName
, and alternativeNames
.getList()
import resolutions from 'video-resolutions';
resolutions.getList();
/* returns: */
[
{
format: Format {
code: null,
name: null,
fullName: null,
alternativeNames: [ 'Microvision' ],
width: 16,
height: 16,
aspects: {
storage: Aspect { string: '1:1', float: 1 },
display: Aspect { string: '1:1', float: 1 },
pixel: Aspect { string: '1:1', float: 1 }
}
},
score: 20.509185851025467
},
/* 183 other items */
]
getAll(query)
resolutions.getAll({
height: 1080
});
/* returns: */
[
Format {
code: null,
name: null,
fullName: null,
alternativeNames: [ 'HDV 1080i' ],
width: 1440,
height: 1080,
/* etc */
}
/* etc */
]
getOne(query, opts)
resolutions.getOne({
width: 4096,
height: 2160
});
/* returns: */
Format {
code: 'DCI_4K',
name: 'DCI 4K',
fullName: 'DCI 4K (DCI 4K)',
alternativeNames: [],
width: 4096,
height: 2160,
aspects: {
storage: Aspect { string: '256:135', float: 1.8962962962962964 },
display: Aspect { string: '1.90:1', float: 1.9 },
pixel: Aspect { string: '1.002', float: 1.002 }
}
}
If no format matches the query,
getOne
will by default return a new Format
created from query's data. By settings the opts
to { create: false }
, the
function will instead return a null Object.getMatchingAspect(format, aspect = 'storage')
resolutions.getMatchingAspect(
resolutions.getOne({
width: 4096,
height: 2160
})
);
/* returns: */
[
Format {
code: 'DCI_2K',
name: 'DCI 2K',
fullName: 'DCI 2K (DCI 2K)',
alternativeNames: [],
width: 2048,
height: 1080,
aspects: {
storage: Aspect { string: '256:135', float: 1.8962962962962964 },
display: Aspect { string: '1.90:1', float: 1.9 },
pixel: Aspect { string: '1.002', float: 1.002 }
}
}
]
If no format matches the query,
getOne
will by default return a new Format
created from query's data. By settings the opts
to { create: false }
, the
function will instead return a null Object.search(query)
resolutions.search('4k');
/* returns: */
[
{
format: Format {
code: 'DCI_4K',
name: 'DCI 4K',
fullName: 'DCI 4K (DCI 4K)',
alternativeNames: [],
width: 4096,
height: 2160,
aspects: {
storage: Aspect { string: '256:135', float: 1.8962962962962964 },
display: Aspect { string: '1.90:1', float: 1.9 },
pixel: Aspect { string: '1.002', float: 1.002 }
}
},
score: 20.509185851025467
},
{
format: Format {
code: '4K_UHD_1',
name: '4K Ultra HD 1',
fullName: '4K Ultra HD 1 (4K UHD-1)',
alternativeNames: [ '2160p', '4000-lines UHDTV (4K UHD)' ],
width: 3840,
height: 2160,
aspects: {
storage: Aspect { string: '16:9', float: 1.7777777777777777 },
display: Aspect { string: '16:9', float: 1.7777777777777777 },
pixel: Aspect { string: '1:1', float: 1 }
}
},
score: 17.092425489432678
},
{
format: Format {
code: 'UW4K',
name: 'Ultra-Wide 4K',
fullName: 'Ultra-Wide 4K (UW4K)',
alternativeNames: [],
width: 3840,
height: 1600,
aspects: {
storage: Aspect { string: '2.35:1', float: 2.35 },
display: Aspect { string: '2.35:1', float: 2.35 },
pixel: Aspect { string: '0.996', float: 0.996 }
}
},
score: 15.99784821394083
}
]
searchOne(query)
This function will return the best result from searchAll
or null
.