Fixes #251 Append doesn't accept a buffer

master
Mihai Potra 9 years ago
parent 4ad9046db4
commit 603c6d3b01
  1. 32
      lib/args.js
  2. 77
      test/appendBuffer.js

@ -4,6 +4,7 @@
var argsToArray = require('./utils').argsToArray;
var isUtil = require('./utils').isUtil;
var tmp = require('tmp');
/**
* Extend proto
*/
@ -91,11 +92,42 @@ module.exports = function (proto) {
for(var j=0,len=arg.length;j<len;j++){
if(isUtil(arg[j]) == 'String'){
this._append.push(arg[j]);
} else if (Buffer.isBuffer(arg[j])) {
appendBuffer(this, arg[j]);
}
}
break;
case 'object':
if (Buffer.isBuffer(arg)) {
appendBuffer(this, arg);
}
break;
}
}
function appendBuffer(self, buf) {
if (buf.byteLength <= 0)
return false;
var m = {
'_options': self._options,
'source': buf,
'sourceBuffer': buf
};
var tmpFileName = tmp.tmpNameSync();
var args = ['convert', '-', tmpFileName];
self._append.push(tmpFileName);
self.preprocessor(function (callback) {
self._spawn.call(m, args, true, callback);
});
return true;
}
return this;
}

@ -0,0 +1,77 @@
var assert = require('assert')
, fs = require('fs')
, paths = require('path')
;
module.exports = function (_, dir, finish, gm) {
var out = paths.resolve(dir + '/appendBuffer.jpg');
try {
require('fs').unlinkSync(out);
} catch (_) {}
var buffer = fs.readFileSync(dir + '/original.jpg');
var m = gm(dir + '/lost.png')
.append(dir + '/original.jpg')
.append(buffer, buffer)
.append()
.background('#222')
var args = m.args();
assert.equal('convert', args[0]);
assert.equal('-background',args[1]);
assert.equal('#222',args[2]);
assert.ok(/examples\/imgs\/lost\.png$/.test(args[3]));
assert.ok(/examples\/imgs\/original\.jpg$/,args[4]);
assert.equal('-append',args[7]);
assert.equal('-',args[8]);
if (!gm.integration) {
return horizontal(dir, finish, gm);
}
m.write(out, function (err) {
if (err) return finish(err);
gm(out).size(function (err, size) {
if (err) return finish(err);
assert.equal(460, size.width);
assert.equal(590, size.height);
horizontal(dir, finish, gm);
})
});
}
function horizontal (dir, finish, gm) {
var out = paths.resolve(dir + '/appendBufferHorizontal.jpg');
var buffer = fs.readFileSync(dir + '/lost.png');
var m = gm(dir + '/original.jpg')
.append(buffer, true);
var args = m.args();
assert.equal('convert', args[0]);
assert.ok(/examples\/imgs\/original\.jpg$/.test(args[1]));
assert.equal('+append',args[3]);
assert.equal('-',args[4]);
if (!gm.integration) {
return finish();
}
m
.write(out, function (err) {
if (err) return finish(err);
gm(out).size(function (err, size) {
if (err) return finish(err);
assert.equal(697, size.width);
assert.equal(155, size.height);
finish();
})
});
}
Loading…
Cancel
Save