adds bitmap support to createFromBuffer
This commit is contained in:
parent
3290c6b335
commit
39875c90f1
3 changed files with 30 additions and 5 deletions
|
@ -79,6 +79,8 @@ float GetScaleFactorFromPath(const base::FilePath& path) {
|
|||
bool AddImageSkiaRep(gfx::ImageSkia* image,
|
||||
const unsigned char* data,
|
||||
size_t size,
|
||||
int width,
|
||||
int height,
|
||||
double scale_factor) {
|
||||
std::unique_ptr<SkBitmap> decoded(new SkBitmap());
|
||||
|
||||
|
@ -87,8 +89,17 @@ bool AddImageSkiaRep(gfx::ImageSkia* image,
|
|||
// Try JPEG.
|
||||
decoded = gfx::JPEGCodec::Decode(data, size);
|
||||
|
||||
if (!decoded)
|
||||
return false;
|
||||
if (!decoded) {
|
||||
// Try Bitmap
|
||||
if (width > 0 && height > 0) {
|
||||
decoded.reset(new SkBitmap);
|
||||
decoded->allocN32Pixels(width, height, false);
|
||||
decoded->setPixels(
|
||||
const_cast<void*>(reinterpret_cast<const void*>(data)));
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
image->AddRepresentation(gfx::ImageSkiaRep(*decoded, scale_factor));
|
||||
return true;
|
||||
|
@ -104,7 +115,7 @@ bool AddImageSkiaRep(gfx::ImageSkia* image,
|
|||
const unsigned char* data =
|
||||
reinterpret_cast<const unsigned char*>(file_contents.data());
|
||||
size_t size = file_contents.size();
|
||||
return AddImageSkiaRep(image, data, size, scale_factor);
|
||||
return AddImageSkiaRep(image, data, size, 0, 0, scale_factor);
|
||||
}
|
||||
|
||||
bool PopulateImageSkiaRepsFromPath(gfx::ImageSkia* image,
|
||||
|
@ -395,6 +406,13 @@ mate::Handle<NativeImage> NativeImage::CreateFromPath(
|
|||
// static
|
||||
mate::Handle<NativeImage> NativeImage::CreateFromBuffer(
|
||||
mate::Arguments* args, v8::Local<v8::Value> buffer) {
|
||||
int width = 0;
|
||||
int height = 0;
|
||||
if (args->Length() >= 3) {
|
||||
args->GetNext(&width);
|
||||
args->GetNext(&height);
|
||||
}
|
||||
|
||||
double scale_factor = 1.;
|
||||
args->GetNext(&scale_factor);
|
||||
|
||||
|
@ -402,6 +420,8 @@ mate::Handle<NativeImage> NativeImage::CreateFromBuffer(
|
|||
AddImageSkiaRep(&image_skia,
|
||||
reinterpret_cast<unsigned char*>(node::Buffer::Data(buffer)),
|
||||
node::Buffer::Length(buffer),
|
||||
width,
|
||||
height,
|
||||
scale_factor);
|
||||
return Create(args->isolate(), gfx::Image(image_skia));
|
||||
}
|
||||
|
|
|
@ -137,15 +137,17 @@ let image = nativeImage.createFromPath('/Users/somebody/images/icon.png')
|
|||
console.log(image)
|
||||
```
|
||||
|
||||
### `nativeImage.createFromBuffer(buffer[, scaleFactor])`
|
||||
### `nativeImage.createFromBuffer(buffer[width, height, scaleFactor])`
|
||||
|
||||
* `buffer` [Buffer][buffer]
|
||||
* `width` Integer (optional)
|
||||
* `height` Integer (optional)
|
||||
* `scaleFactor` Double (optional)
|
||||
|
||||
Returns `NativeImage`
|
||||
|
||||
Creates a new `NativeImage` instance from `buffer`. The default `scaleFactor` is
|
||||
1.0.
|
||||
1.0. If `buffer` is a bitmap, specify `width` and `height` of the image.
|
||||
|
||||
### `nativeImage.createFromDataURL(dataURL)`
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@ describe('nativeImage module', () => {
|
|||
|
||||
const imageC = nativeImage.createFromBuffer(imageA.toJPEG(100))
|
||||
assert.deepEqual(imageC.getSize(), {width: 538, height: 190})
|
||||
|
||||
const imageD = nativeImage.createFromBuffer(imageA.toBitmap(), 538, 190)
|
||||
assert.deepEqual(imageD.getSize(), {width: 538, height: 190})
|
||||
})
|
||||
})
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue