Сохранение блога imagemagick в буфер узла

Я пишу расширение imagemagick для узла, и когда я пытаюсь сохранить BLOB-объект в буфер, я получаю Ошибка сегментации.

using Magick::Blob;
using v8::MaybeLocal;
using v8::Object;

Isolate *isolate = args.GetIsolate();
NodeMagick *obj = ObjectWrap::Unwrap<NodeMagick>(args.Holder());

Blob blob;
obj->image.write(&blob);
MaybeLocal<Object> buffer = node::Buffer::New(isolate, (char *)blob.data(), node::encoding::UTF8);

Если я распечатываю Blob, я получаю некоторые данные, но не все …

printf((char*)blob.data());
// Displays:
// ëPNG

Я не совсем уверен, почему это происходит. Мои данные не сохраняются полностью в BLOB-объект?

Если я изменю obj->image.write(&blob); в obj->image.write("out.png"); и удалите buffer = ... файл создается и доступен для просмотра, так что мне здесь не хватает с Blob?

0

Решение

Как указано в комментариях, вы должны сказать Node’s Buffer насколько большой размер капли.

 Blob blob;
obj->image.write(&blob)
MaybeLocal<Object> buffer = node::Buffer::Copy(isolate,
(char *)blob.data(),
blob.length());

Глядя на node_buffer.h файла, может быть более целесообразным использовать node::Buffer::Copy конструктор, или рискуйте дополнительными ошибками во время освобождения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]