как нарисовать изображение на холсте с изображением,полученным с маршрута base64 в vue, js

#node.js #vue.js #canvas

Вопрос:

Я создал платформу электронного обучения и хочу получать сертификаты для каждого курса. Преподаватели этих курсов хранят свои подписи в виде изображения base64 в моем mongobd. что я хочу сделать, так это, когда пользователь запросит свой сертификат после прохождения курса, я создам cavas с моим файлом jpeg certifiage и объединю его с подписью инструктора в соответствующем поле, я успешно добавил имя пользователя и все остальное. пожалуйста, как мне добавить эту подпись, вот мой код

 mounted(){
        this.userId = localStorage.getItem('fmruser');
        this.courseId = this.$route.params.courseId;
        this.testId = this.$route.params.testId;
        let object = {
            user : this.userId, 
            test : this.testId, 
            course : this.courseId
        }
        this.fetch_StudentCertificate(object)
        .then(res => {
            this.certUser = res.data.userDetails
            this.certTestLog = res.data.testLog
            this.certCourse = res.data.courseDetails
            this.checkInstitution()
            addTextToImage(
                myImage, 
                this.certUser.firstName  ' ' this.certUser.lastName, 
                this.certCourse.title, 
                this.certCourse.user[0].firstName  ' ' this.certCourse.user[0].lastName,
                "Miss Thelma Ibeh",
                this.certTestLog[0]._id
            );
        })
        
    const gCanvas = this.$refs.device // document.querySelector('#c');
    const gCtx = gCanvas.getContext('2d');
    document.querySelector('#save').addEventListener('click', onSave);


     function addTextToImage(imagePath, studentName, courseName, InstructorName, DirectorName, 
         certificateId ) {

            // Draw Image function
            var date =  (new Date()).toString().split(' ').splice(1,3).join(' ');
            var img = new Image();
            img.src = imagePath;
            var sign = new Image();
            sign.src = signature;
            sign.width = 100;
            sign.height = 50;

            img.onload = function () {
                gCtx.drawImage(img, 0, 0, 800, 500);
                gCtx.lineWidth = 1;
                gCtx.fillStyle = "#000";
                gCtx.lineStyle = "#000";
                gCtx.font = "15px sans-serif";
                gCtx.fillText(studentName, 100, 170);
                gCtx.fillText(courseName, 100, 250);
                gCtx.fillText(date, 170, 310);
                gCtx.fillText(certificateId, 415, 310);
                gCtx.fillText(InstructorName, 80, 400);
                gCtx.fillText(DirectorName, 600, 400);
                //gCtx.drawImage(sign, 400, 410, 450, 460);
                gCtx.drawImage(sign,600, 450, sign.naturalWidth, sign.naturalHeight,600, 450, 100, 50);
                //gCtx.drawImage(sign, 200, 200, 400, 400 * 50 / 10)
                //date
            };
        }
 

Я использовал там фиктивное изображение в качестве знака, но даже это не работает идеально, изображение динамической подписи можно получить с помощью этого маршрута

 <img :src="backEnd 'auth/fetchUserCredential/' certCourse.user[0]._id '/signature'" alt="" >
 

если вам нужна какая-либо информация, которой здесь нет, пожалуйста, укажите ее в разделе комментариев, и я предоставлю