我可以为水印处理 base64 编码图像吗?

Can I process base64 encoded image for watermark?

我想处理图像并通过使用 transloadit 添加水印来确保图像安全。但是我拥有的图像源是 base64 编码的字符串,而不是要求用户将其上传到表单。我可以传递这个 base64 编码的字符串来形成和处理它以获得水印吗?

感谢任何帮助。谢谢!

看来您需要将 base64 数据 uri 转换为 Blob 对象,然后手动将 blob 设置为 FormData 中的参数,如 this SO question

中所建议
function dataURItoBlob(dataURI) {
    // convert base64/URLEncoded data component to raw binary data held in a string
    var byteString;
    if (dataURI.split(',')[0].indexOf('base64') >= 0)
        byteString = atob(dataURI.split(',')[1]);
    else
        byteString = unescape(dataURI.split(',')[1]);

    // separate out the mime component
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];

    // write the bytes of the string to a typed array
    var ia = new Uint8Array(byteString.length);
    for (var i = 0; i < byteString.length; i++) {
        ia[i] = byteString.charCodeAt(i);
    }

    return new Blob([ia], {type:mimeString});
}

然后使用以下方式设置它:

var dataURL = canvas.toDataURL('image/jpeg', 0.5);
var blob = dataURItoBlob(dataURL);
var fd = new FormData(document.forms[0]);
fd.append("canvasImage", blob);

代码归功于@Stoive