image save()

This commit is contained in:
Peter Braden 2012-01-16 23:10:04 -08:00
parent 7b2b8ba618
commit 10c7436884
6 changed files with 41 additions and 4 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -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, "!!")
console.log(new opencv.Image('./examples/mona.jpg').save('t1.jpg'))

View File

@ -18,12 +18,19 @@ Image::Init(Handle<Object> 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<Value>
@ -63,12 +70,28 @@ Image::Image(v8::Value* fileName): ObjectWrap() {
Handle<Value>
Image::GetWidth(Local<String>, const AccessorInfo &info) {
HandleScope scope;
return scope.Close(Number::New(5));
Image *img = ObjectWrap::Unwrap<Image>(info.This());
return scope.Close(Number::New(img->image.size().width));
}
Handle<Value>
Image::GetHeight(Local<String>, const AccessorInfo &info) {
HandleScope scope;
return scope.Close(Number::New(5));
Image *img = ObjectWrap::Unwrap<Image>(info.This());
return scope.Close(Number::New(img->image.size().height));
}
Handle<Value>
Image::Save(const v8::Arguments& args){
HandleScope scope;
if (!args[0]->IsString())
return ThrowException(Exception::TypeError(String::New("filename required")));
Image *self = ObjectWrap::Unwrap<Image>(args.This());
String::AsciiValue filename(args[0]);
int res = cv::imwrite(*filename, self->image);
return scope.Close(Number::New(res));
}

View File

@ -15,4 +15,7 @@ class Image: public node::ObjectWrap {
static Handle<Value> GetWidth(Local<String> prop, const AccessorInfo &info);
static Handle<Value> GetHeight(Local<String> prop, const AccessorInfo &info);
static Handle<Value> Save(const v8::Arguments&);
};

View File

@ -62,7 +62,7 @@ Point::Dot(const v8::Arguments& args){
HandleScope scope;
Point *p1 = ObjectWrap::Unwrap<Point>(args.This());
Point *p2 = ObjectWrap::Unwrap<Point>(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));
}

View File

@ -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();