Add nativeImage.createFromDataUrl()
This commit is contained in:
parent
b9f6d6dffc
commit
8e94856cc8
2 changed files with 28 additions and 10 deletions
|
@ -9,10 +9,12 @@
|
|||
|
||||
#include "atom/common/native_mate_converters/file_path_converter.h"
|
||||
#include "atom/common/native_mate_converters/gfx_converter.h"
|
||||
#include "atom/common/native_mate_converters/gurl_converter.h"
|
||||
#include "base/files/file_util.h"
|
||||
#include "base/strings/string_util.h"
|
||||
#include "native_mate/dictionary.h"
|
||||
#include "native_mate/object_template_builder.h"
|
||||
#include "net/base/data_url.h"
|
||||
#include "ui/base/layout.h"
|
||||
#include "ui/gfx/codec/jpeg_codec.h"
|
||||
#include "ui/gfx/codec/png_codec.h"
|
||||
|
@ -169,19 +171,17 @@ mate::Handle<NativeImage> NativeImage::Create(
|
|||
|
||||
// static
|
||||
mate::Handle<NativeImage> NativeImage::CreateFromPNG(
|
||||
v8::Isolate* isolate, v8::Handle<v8::Value> buffer) {
|
||||
v8::Isolate* isolate, const char* buffer, size_t length) {
|
||||
gfx::Image image = gfx::Image::CreateFrom1xPNGBytes(
|
||||
reinterpret_cast<unsigned char*>(node::Buffer::Data(buffer)),
|
||||
node::Buffer::Length(buffer));
|
||||
reinterpret_cast<const unsigned char*>(buffer), length);
|
||||
return Create(isolate, image);
|
||||
}
|
||||
|
||||
// static
|
||||
mate::Handle<NativeImage> NativeImage::CreateFromJPEG(
|
||||
v8::Isolate* isolate, v8::Handle<v8::Value> buffer) {
|
||||
v8::Isolate* isolate, const char* buffer, size_t length) {
|
||||
gfx::Image image = gfx::ImageFrom1xJPEGEncodedData(
|
||||
reinterpret_cast<unsigned char*>(node::Buffer::Data(buffer)),
|
||||
node::Buffer::Length(buffer));
|
||||
reinterpret_cast<const unsigned char*>(buffer), length);
|
||||
return Create(isolate, image);
|
||||
}
|
||||
|
||||
|
@ -198,6 +198,20 @@ mate::Handle<NativeImage> NativeImage::CreateFromPath(
|
|||
return Create(isolate, image);
|
||||
}
|
||||
|
||||
// static
|
||||
mate::Handle<NativeImage> NativeImage::CreateFromDataURL(
|
||||
v8::Isolate* isolate, const GURL& url) {
|
||||
std::string mime_type, charset, data;
|
||||
if (net::DataURL::Parse(url, &mime_type, &charset, &data)) {
|
||||
if (mime_type == "image/png")
|
||||
return CreateFromPNG(isolate, data.c_str(), data.size());
|
||||
else if (mime_type == "image/jpeg")
|
||||
return CreateFromJPEG(isolate, data.c_str(), data.size());
|
||||
}
|
||||
|
||||
return CreateEmpty(isolate);
|
||||
}
|
||||
|
||||
} // namespace api
|
||||
|
||||
} // namespace atom
|
||||
|
@ -209,9 +223,9 @@ void Initialize(v8::Handle<v8::Object> exports, v8::Handle<v8::Value> unused,
|
|||
v8::Handle<v8::Context> context, void* priv) {
|
||||
mate::Dictionary dict(context->GetIsolate(), exports);
|
||||
dict.SetMethod("createEmpty", &atom::api::NativeImage::CreateEmpty);
|
||||
dict.SetMethod("createFromPng", &atom::api::NativeImage::CreateFromPNG);
|
||||
dict.SetMethod("createFromJpeg", &atom::api::NativeImage::CreateFromJPEG);
|
||||
dict.SetMethod("createFromPath", &atom::api::NativeImage::CreateFromPath);
|
||||
dict.SetMethod("createFromDataUrl",
|
||||
&atom::api::NativeImage::CreateFromDataURL);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
#include "native_mate/wrappable.h"
|
||||
#include "ui/gfx/image/image.h"
|
||||
|
||||
class GURL;
|
||||
|
||||
namespace base {
|
||||
class FilePath;
|
||||
}
|
||||
|
@ -27,11 +29,13 @@ class NativeImage : public mate::Wrappable {
|
|||
static mate::Handle<NativeImage> Create(
|
||||
v8::Isolate* isolate, const gfx::Image& image);
|
||||
static mate::Handle<NativeImage> CreateFromPNG(
|
||||
v8::Isolate* isolate, v8::Handle<v8::Value> buffer);
|
||||
v8::Isolate* isolate, const char* buffer, size_t length);
|
||||
static mate::Handle<NativeImage> CreateFromJPEG(
|
||||
v8::Isolate* isolate, v8::Handle<v8::Value> buffer);
|
||||
v8::Isolate* isolate, const char* buffer, size_t length);
|
||||
static mate::Handle<NativeImage> CreateFromPath(
|
||||
v8::Isolate* isolate, const base::FilePath& path);
|
||||
static mate::Handle<NativeImage> CreateFromDataURL(
|
||||
v8::Isolate* isolate, const GURL& url);
|
||||
|
||||
// The default constructor should only be used by image_converter.cc.
|
||||
NativeImage();
|
||||
|
|
Loading…
Add table
Reference in a new issue