diff --git a/examples/mona.jpg b/examples/mona.jpg index ced88ac..eb78927 100644 Binary files a/examples/mona.jpg and b/examples/mona.jpg differ diff --git a/smoketest.js b/smoketest.js index b2f1932..3f71020 100755 --- a/smoketest.js +++ b/smoketest.js @@ -2,4 +2,6 @@ var opencv = require('./lib/opencv') , assert = require('assert') console.log(opencv.version) -console.log(new opencv.Image("./examples/mona.jpg").width, "!!") \ No newline at end of file + + +console.log(new opencv.Image('./examples/mona.jpg').save('t1.jpg')) \ No newline at end of file diff --git a/src/Image.cc b/src/Image.cc index fbedaed..0615098 100644 --- a/src/Image.cc +++ b/src/Image.cc @@ -18,12 +18,19 @@ Image::Init(Handle target) { proto->SetAccessor(String::NewSymbol("width"), GetWidth); proto->SetAccessor(String::NewSymbol("height"), GetHeight); + NODE_SET_PROTOTYPE_METHOD(constructor, "save", Save); + + /*proto->SetAccessor(String::NewSymbol("source"), GetSource, SetSource); proto->SetAccessor(String::NewSymbol("complete"), GetComplete); proto->SetAccessor(String::NewSymbol("onload"), GetOnload, SetOnload); proto->SetAccessor(String::NewSymbol("onerror"), GetOnerror, SetOnerror);*/ target->Set(String::NewSymbol("Image"), constructor->GetFunction()); + + + + }; Handle @@ -63,12 +70,28 @@ Image::Image(v8::Value* fileName): ObjectWrap() { Handle Image::GetWidth(Local, const AccessorInfo &info) { HandleScope scope; - return scope.Close(Number::New(5)); + Image *img = ObjectWrap::Unwrap(info.This()); + return scope.Close(Number::New(img->image.size().width)); } Handle Image::GetHeight(Local, const AccessorInfo &info) { HandleScope scope; - return scope.Close(Number::New(5)); + Image *img = ObjectWrap::Unwrap(info.This()); + return scope.Close(Number::New(img->image.size().height)); } + +Handle +Image::Save(const v8::Arguments& args){ + HandleScope scope; + + if (!args[0]->IsString()) + return ThrowException(Exception::TypeError(String::New("filename required"))); + + Image *self = ObjectWrap::Unwrap(args.This()); + String::AsciiValue filename(args[0]); + int res = cv::imwrite(*filename, self->image); + return scope.Close(Number::New(res)); +} + diff --git a/src/Image.h b/src/Image.h index 81b37a6..8e05adf 100644 --- a/src/Image.h +++ b/src/Image.h @@ -15,4 +15,7 @@ class Image: public node::ObjectWrap { static Handle GetWidth(Local prop, const AccessorInfo &info); static Handle GetHeight(Local prop, const AccessorInfo &info); + + static Handle Save(const v8::Arguments&); + }; diff --git a/src/Point.cc b/src/Point.cc index c4e7ba8..d936d67 100644 --- a/src/Point.cc +++ b/src/Point.cc @@ -62,7 +62,7 @@ Point::Dot(const v8::Arguments& args){ HandleScope scope; Point *p1 = ObjectWrap::Unwrap(args.This()); Point *p2 = ObjectWrap::Unwrap(args[0]->ToObject()); - + // Since V 2.3 Native Dot no longer supported return scope.Close(Number::New(p1->point.x * p2->point.x + p1->point.y * p2->point.y)); } diff --git a/test/smoke.js b/test/smoke.js index cc2ee82..4bdf8a9 100644 --- a/test/smoke.js +++ b/test/smoke.js @@ -60,7 +60,16 @@ vows.describe('Smoke Tests OpenCV').addBatch({ , "Image" : { + topic : require('../lib/opencv') + + , "constructor": function(cv){ + assert.ok(new cv.Image("./examples/mona.jpg")) + } + , ".width / .height" : function(cv){ + assert.equal(new cv.Image("./examples/mona.jpg").width, 500) + assert.equal(new cv.Image("./examples/mona.jpg").height, 756) + } } }).run(); \ No newline at end of file