1

アルバム カバー イメージをサポートするために、 node-libspotifyのlibspotifyラッパーを拡張しています。これまでのところ、私は次の作業中のcバインディングコードを持っています:

static Handle<Value> Album_Cover(const Arguments& args) {
    HandleScope scope;

    // test arguments sanity
    assert(args.Length() == 2);
    assert(args[0]->IsObject());  // sp_session
    assert(args[1]->IsObject());  // sp_album

    ObjectHandle<sp_session> *session = ObjectHandle<sp_session>::Unwrap(args[0]);
    ObjectHandle<sp_album> *album = ObjectHandle<sp_album>::Unwrap(args[1]);

    const byte *image_id = sp_album_cover(album->pointer, SP_IMAGE_SIZE_LARGE);
    size_t image_size;
    const void *image_data;

    if(image_id) {
        sp_image *image = sp_image_create(session->pointer, image_id);
        image_data = sp_image_data(image, &image_size);

        sp_image_release(image);
    }

    return scope.Close(image_data);
}

私は最後の行で苦労しています:実行時に生の画像データをnode.jsに渡すにはどうすればよいscope.Close(...)ですか?

提案をありがとう。

4

1 に答える 1

1

v8::Valuev8::HandleScope::Closeでハンドルを引数としてラップする必要があります。

v8::Stringはそれを行うべきだと思います - v8::String クラスリファレンス

scope.Close(String::New((const char*)image_data, image_size));

Av8::Arrayも役に立つかもしれません - それはすべて、後で返された値をどのように使用するかによって異なります。

これが役立つことを願っています。

于 2013-09-02T13:18:15.363 に答える