Skip to content

Commit

Permalink
access to raw image data
Browse files Browse the repository at this point in the history
  • Loading branch information
derfred committed Sep 7, 2022
1 parent 2f1e11b commit edc7520
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
12 changes: 12 additions & 0 deletions core/display.js
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,18 @@ export default class Display {
this.viewportChangePos(0, 0);
}

getImageData() {
return this._drawCtx.getImageData(0, 0, this.width, this.height);
}

toDataURL(type, encoderOptions) {
return this._backbuffer.toDataURL(type, encoderOptions);
}

toBlob(callback, type, quality) {
return this._backbuffer.toBlob(callback, type, quality);
}

// Track what parts of the visible canvas that need updating
_damage(x, y, w, h) {
if (x < this._damageBounds.left) {
Expand Down
12 changes: 12 additions & 0 deletions core/rfb.js
Original file line number Diff line number Diff line change
Expand Up @@ -500,6 +500,18 @@ export default class RFB extends EventTargetMixin {
}
}

getImageData() {
return this._display.getImageData();
}

toDataURL(type, encoderOptions) {
return this._display.toDataURL(type, encoderOptions);
}

toBlob(callback, type, quality) {
return this._display.toBlob(callback, type, quality);
}

// ===== PRIVATE METHODS =====

_connect() {
Expand Down
61 changes: 61 additions & 0 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,15 @@ protocol stream.
[`RFB.clipboardPasteFrom()`](#rfbclipboardpastefrom)
- Send clipboard contents to server.

[`RFB.getImageData()`](#rfbgetimagedata)
- Return the current content of the screen as an ImageData array.

[`RFB.toDataURL()`](#rfbtodataurl)
- Return the current content of the screen as data-url encoded image file.

[`RFB.toBlob()`](#rfbtoblob)
- Return the current content of the screen as Blob encoded image file.

### Details

#### RFB()
Expand Down Expand Up @@ -423,3 +432,55 @@ to the remote server.

**`text`**
- A `DOMString` specifying the clipboard data to send.

#### RFB.getImageData()

The `RFB.getImageData()` method is used to return the current content of the
screen encoded as [`ImageData`](https://developer.mozilla.org/en-US/docs/Web/API/ImageData).

##### Syntax

RFB.getImageData();

#### RFB.toDataURL()

The `RFB.toDataURL()` method is used to return the current content of the
screen encoded as a data URL that could for example be put in the `src` attribute
of an `img` tag.

##### Syntax

RFB.toDataURL();
RFB.toDataURL(type);
RFB.toDataURL(type, encoderOptions);

###### Parameters

**`type`** *Optional*
- A string indicating the requested MIME type of the image

**`encoderOptions`** *Optional*
- A number between 0 and 1 indicating the image quality.

#### RFB.toBlob()

The `RFB.toBlob()` method is used to return the current content of the
screen encoded as [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).

##### Syntax

RFB.toDataURL(callback);
RFB.toDataURL(callback, type);
RFB.toDataURL(callback, type, quality);

###### Parameters

**`callback`**
- A callback function which will receive the resulting [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
as the single argument

**`type`** *Optional*
- A string indicating the requested MIME type of the image

**`encoderOptions`** *Optional*
- A number between 0 and 1 indicating the image quality.

0 comments on commit edc7520

Please sign in to comment.