diff --git a/src/vs/platform/browserView/common/browserView.ts b/src/vs/platform/browserView/common/browserView.ts index cfff846b44301..9a20dd0264047 100644 --- a/src/vs/platform/browserView/common/browserView.ts +++ b/src/vs/platform/browserView/common/browserView.ts @@ -88,6 +88,9 @@ export interface IBrowserViewBounds { } export interface IBrowserViewCaptureScreenshotOptions { + /** Image format. Defaults to `'jpeg'`. */ + format?: 'jpeg' | 'png'; + /** Image quality (0-100). Only applies when {@link format} is `'jpeg'`. Defaults to 80. */ quality?: number; screenRect?: { x: number; y: number; width: number; height: number }; pageRect?: { x: number; y: number; width: number; height: number }; diff --git a/src/vs/platform/browserView/electron-main/browserView.ts b/src/vs/platform/browserView/electron-main/browserView.ts index e1ae26c8e2626..8e613ffe11de2 100644 --- a/src/vs/platform/browserView/electron-main/browserView.ts +++ b/src/vs/platform/browserView/electron-main/browserView.ts @@ -617,7 +617,7 @@ export class BrowserView extends Disposable { const image = await this._view.webContents.capturePage(options?.screenRect, { stayHidden: true }); - const buffer = image.toJPEG(quality); + const buffer = options?.format === 'png' ? image.toPNG() : image.toJPEG(quality); const screenshot = VSBuffer.wrap(buffer); // Only update _lastScreenshot if capturing the full view if (!options?.screenRect) { diff --git a/src/vs/workbench/contrib/browserView/electron-browser/features/browserEditorChatFeatures.ts b/src/vs/workbench/contrib/browserView/electron-browser/features/browserEditorChatFeatures.ts index 9d806cae05e1e..de40a587e4966 100644 --- a/src/vs/workbench/contrib/browserView/electron-browser/features/browserEditorChatFeatures.ts +++ b/src/vs/workbench/contrib/browserView/electron-browser/features/browserEditorChatFeatures.ts @@ -302,7 +302,7 @@ export class BrowserEditorChatIntegration extends BrowserEditorContribution { const attachImages = this.configurationService.getValue('chat.sendElementsToChat.attachImages'); if (attachImages) { const screenshotBuffer = await model.captureScreenshot({ - quality: 90, + format: 'png', pageRect: bounds });