This commit is contained in:
Peter Braden 2012-01-23 08:51:59 -08:00
parent f02ec18e2b
commit 1acbe4bcaa
2 changed files with 26 additions and 4 deletions

View File

@ -124,10 +124,24 @@ Image::Save(const v8::Arguments& args){
Handle<Value>
Image::ToBuffer(const v8::Arguments& args){
HandleScope scope;
//Buffer *buf = Buffer::New(mat->length);
//cv::imencode('.jpg', mat, vec, CV_IMWRITE_JPEG_QUALITY 90)
Image *self = ObjectWrap::Unwrap<Image>(args.This());
vector<uchar> vec(0);
vector<int> params(0);//CV_IMWRITE_JPEG_QUALITY 90
return scope.Close(Number::New(0));
cv::imencode(".jpg", self->mat, vec, params);
node::Buffer *buf = node::Buffer::New(vec.size());
uchar* data = (uchar*) Buffer::Data(buf);
memcpy(data, &vec[0], vec.size());
v8::Local<v8::Object> globalObj = v8::Context::GetCurrent()->Global();
v8::Local<v8::Function> bufferConstructor = v8::Local<v8::Function>::Cast(globalObj->Get(v8::String::New("Buffer")));
v8::Handle<v8::Value> constructorArgs[3] = {buf->handle_, v8::Integer::New(vec.size()), v8::Integer::New(0)};
v8::Local<v8::Object> actualBuffer = bufferConstructor->NewInstance(3, constructorArgs);
return scope.Close(actualBuffer);
}

View File

@ -103,7 +103,15 @@ vows.describe('Smoke Tests OpenCV').addBatch({
, ".ellipse": function(cv){
assert.equal(new cv.Image("./examples/mona.jpg").ellipse(10, 10, 10, 10), undefined)
}
, "toBuffer": function(cv){
var buf = fs.readFileSync('./examples/mona.jpg')
, im = new cv.Image(buf.slice(0))
, buf0 = im.toBuffer()
assert.ok(buf0);
//assert.equal(buf.toString('base64'), buf0.toString('base64'));
}
}
, "CascadeClassifier": {