multi-project/projects/app/_modules/viget/qrcode/qrcode.component.ts

40 lines
1.1 KiB
TypeScript

import { Component, Input, OnChanges } from '@angular/core';
@Component({
selector: 'qr-code',
templateUrl: './qrcode.component.html',
styleUrls: ['./qrcode.component.scss']
})
export class QRCodeComponent {
@Input() txt:string = 'lenta.ru';
saveAsImage(parent: any, btn:any) {
let parentElement = parent.qrcElement.nativeElement
.querySelector("canvas")
.toDataURL("image/png")
if (parentElement) {
let blobData = this.convertBase64ToBlob(parentElement)
const blob = new Blob([blobData], { type: "image/png" })
const url = window.URL.createObjectURL(blob)
const link = document.createElement("a")
btn.href = url
btn.download = "angularx-qrcode"
}
}
private convertBase64ToBlob(Base64Image: string) {
const parts = Base64Image.split(";base64,")
const imageType = parts[0].split(":")[1]
const decodedData = window.atob(parts[1])
const uInt8Array = new Uint8Array(decodedData.length)
for (let i = 0; i < decodedData.length; ++i) {
uInt8Array[i] = decodedData.charCodeAt(i)
}
return new Blob([uInt8Array], { type: imageType })
}
}