string2png
Version:
Convert strings in various formats to tiny images
55 lines (40 loc) • 1.36 kB
JavaScript
var fill = require('./fill')
, Colour = require('deepcolour')
module.exports = function channels( data, options ) {
if ( !Array.isArray( data ) )
data = require('./bytes')( data, options )
else if ( isAllColours( data ) )
return data
options = options || {}
var channels = options.channels || 'rgb'
if ( 'number' == typeof channels ) {
channels = parseInt( channels ) || 0
channels = 'rgba'.substr( 0, channels ) + '0'.repeat( Math.max( 0, channels - 4 ) )
}
if ( 'string' == typeof channels ) {
channels = channels.split('')
}
if ( !Array.isArray( channels ) )
throw new Error('options.channels must be number, string or array')
if ( !channels.length )
return []
var stride = options.stride = parseInt( options.stride ) || channels.length
var length = Math.ceil( data.length / stride )
var result = fill( [], length, options )
for ( var index = 0; index < length; index ++ ) {
for ( var j = 0; j < stride; j ++ ) {
var value = data[index*stride+j]
let channelIndex = result[index].channelIndex( channels[j] )
if ( channelIndex != -1 )
result[index].setChannel( channelIndex, value )
}
}
return result
}
function isAllColours( data ) {
for ( let i = 0; i < data.length; i ++ )
if ( !data[i].length )
return false
return true
}