diff --git a/atom/common/api/atom_api_native_image.cc b/atom/common/api/atom_api_native_image.cc index dc4b73771280..354e8a8fa8b4 100644 --- a/atom/common/api/atom_api_native_image.cc +++ b/atom/common/api/atom_api_native_image.cc @@ -10,6 +10,7 @@ #include "native_mate/dictionary.h" #include "native_mate/object_template_builder.h" #include "ui/gfx/geometry/size.h" +#include "ui/gfx/image/image_util.h" #include "atom/common/node_includes.h" @@ -32,6 +33,7 @@ mate::ObjectTemplateBuilder NativeImage::GetObjectTemplateBuilder( if (template_.IsEmpty()) template_.Reset(isolate, mate::ObjectTemplateBuilder(isolate) .SetMethod("toPng", &NativeImage::ToPNG) + .SetMethod("toJpeg", &NativeImage::ToJPEG) .SetMethod("isEmpty", &NativeImage::IsEmpty) .SetMethod("getSize", &NativeImage::GetSize) .Build()); @@ -47,6 +49,14 @@ v8::Handle NativeImage::ToPNG(v8::Isolate* isolate) { png->size()); } +v8::Handle NativeImage::ToJPEG(v8::Isolate* isolate, int quality) { + std::vector output; + gfx::JPEG1xEncodedDataFromImage(image_, quality, &output); + return node::Buffer::New(isolate, + reinterpret_cast(&output.front()), + output.size()); +} + bool NativeImage::IsEmpty() { return image_.IsEmpty(); } diff --git a/atom/common/api/atom_api_native_image.h b/atom/common/api/atom_api_native_image.h index 44bfbb784d4e..3eea50d523f7 100644 --- a/atom/common/api/atom_api_native_image.h +++ b/atom/common/api/atom_api_native_image.h @@ -32,6 +32,7 @@ class NativeImage : public mate::Wrappable { private: v8::Handle ToPNG(v8::Isolate* isolate); + v8::Handle ToJPEG(v8::Isolate* isolate, int quality); bool IsEmpty(); gfx::Size GetSize();