2 回答

TA貢獻1788條經驗 獲得超4個贊
我找到了如何用畫布壓縮圖像
compress(webcamImage: WebcamImage, quality: number): Observable<string> {
let _canvas = this.canvas;
let width = webcamImage.width;
let height = webcamImage.height;
_canvas.width = width;
_canvas.height = height;
// paint snapshot image to canvas
const img = new Image();
img.src = webcamImage.imageAsDataUrl;
return Observable.create(observe => {
(img.onload = () => {
const context2d = _canvas.getContext('2d');
context2d.drawImage(img, 0, 0, width, height);
// read canvas content as image
const mimeType: string = webcamImage.mineType;
const dataUrl: string = _canvas.toDataURL(mimeType, quality);
observe.next(dataUrl);
});
});
}

TA貢獻1725條經驗 獲得超8個贊
base64 圖像很可能在以 base64 編碼之前已經被壓縮 (jpeg)。您無法進一步壓縮此類數據。
如果您需要高質量和低質量的圖像,您應該從網絡攝像頭請求高質量(最好是原始像素)圖像并將其轉換為具有不同壓縮參數的 jpeg 圖像。
如果相機只返回jpeg數據,需要先解壓再用不同的參數重新壓縮,這是可能的,但會消耗更多的時間,導致質量更差。
Ngx-webcam 可能對此要求有一些限制,可能需要查看其代碼并對其進行一些擴展以返回不同質量級別的捕獲圖像。有一個captureImageData
標志可用于檢索原始圖像數據,但有關如何使用它的文檔有點少。
添加回答
舉報