相关疑难解决方法(0)

如何在 JavaScript 中将图像转换为 base64

我正在尝试编写一个文件上传脚本以在安全的企业内部网中使用,但遇到了一些麻烦......

在下面的代码中,我没有收到任何错误,我所有的调试看起来都在工作,但最终结果总是一个“空白”图像:

var ctx = document.createElement('canvas');
var img = new Image();
img.onload = function(){
    ctx.drawImage(img,0,0);
}
img.src = $('#UpdateImage:file');

var imgStr = ctx.toDataURL("image/png", "");
document.getElementById("Item_Create_Image_Avatar").src = imgStr;
Run Code Online (Sandbox Code Playgroud)

当我在 'Item_Create_Image_Avatar' 对象上“检查元素”时,'src' 值看起来非常完美:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAEYklEQVR4Xu3UAQkAAAwCwdm/9HI83BLIOdw5AgQIRAQWySkmAQIEzmB5AgIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlACBB1YxAJfjJb2jAAAAAElFTkSuQmCC" id="Item_Create_Image_Avatar" style="vertical-align:top">
Run Code Online (Sandbox Code Playgroud)

为什么我的图像是空白的?

html javascript image

5
推荐指数
1
解决办法
3万
查看次数

无法使用cordova-plugin-file-transfer上传base64图像

我正在尝试使用cordova-plugin-file-transfer将base64中的映像上传到服务器,直到现在仍无法正常工作。我的代码是这样的:

photoBase64 = photoBase64.replace('data:image/png;base64,', '');

var url = "http://MYURL.com/path";

var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = "photoName.png";
options.mimeType = "image/png";

var ft = new FileTransfer();

ft.upload(photoBase64, 
          encodeURI(url), 

          function(result) {

                console.log("Code = " + result.responseCode);
                console.log("Response = " + result.response);
                console.log("Sent = " + result.bytesSent);
                resolve("OK");
          }, 

          function(error) {

                alert("An error has occurred: Code = " + error.code);
                console.error("ERROR", error);
                console.log("upload error source " + error.source);
                console.log("upload error target " + error.target);
                reject("ERROR");
          }, 

          options);
Run Code Online (Sandbox Code Playgroud)

我在此代码中收到以下错误:

我收到以下错误:

如何使用cordova-plugin-file-transfer上传图像base64?

提前致谢!

phonegap-plugins cordova ionic-framework cordova-plugins

4
推荐指数
1
解决办法
4629
查看次数

在 JavaScript 中使用 base64 将图像转换为二进制

我必须将图像转换为二进制,以便通过 IPFS 存储它,并再次将其检索为可查看图像。

我应该用 javascript 代码来做到这一点。有没有人有任何明确的例子来说明如何做到这一点?Base64 对我有帮助吗?

提前致谢

javascript base64 image-conversion

4
推荐指数
1
解决办法
2万
查看次数

链接中的图像未显示在 html2pdf 中

我正在尝试使用我使用 npm 安装的html2pdf在 javascript 中生成 pdf 。问题是它不会显示来自 pdf 中的 url 的图像。这是我的代码: 我的打印功能可生成我的数据的 pdf

这是一个显示问题的沙箱: https://codesandbox.io/s/html2pdf-not-loading-image-gvmx0u

正如您所看到的,当您单击“导出为 pdf”时,内容变量中硬编码的图像没有进入文件。

结果是一个带有空格而不是图像的 pdf 文件。有谁知道如何将我的图片转为pdf文件?js 中有没有更好的库可以从 html 构建 pdf ?

javascript html2pdf

4
推荐指数
2
解决办法
1万
查看次数

比较 2 个 imageData 对象

我有 2 个 imageData 对象,它们是通过相同的上下文从同一画布获取的。\n但是在比较它们时,当我认为它们应该包含相同的数据时,它们并不相等:

\n\n
var canv = document.createElement("canvas");\ncanv.setAttribute(\'width\', 300);\ncanv.setAttribute(\'height\', 300);\nvar context = canv.getContext(\'2d\');\ncontext.fillStyle = "#ff0000";\ncontext.fillRect(0, 0, 300, 300);\n\nvar imageData = context.getImageData(0, 0, 300, 300);\nvar imageData2 = context.getImageData(0, 0, 300, 300);\n\nif (imageData == imageData2) {\n    console.log("Test1: same");\n} else {\n    console.log("Test1: different");\n}\nif (imageData.data == imageData2.data) {\n    console.log("Test2: same");\n} else {\n    console.log("Test2: different");\n}\n\nif (imageData == imageData) {\n    console.log("Test3: same");\n} else {\n    console.log("Test3: different");\n}\nif (imageData.data == imageData.data) {\n    console.log("Test4: same");\n} else {\n    console.log("Test4: different");\n}\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

该代码输出:

\n\n
Test1: different\nTest2: different\nTest3: same\nTest4: same …
Run Code Online (Sandbox Code Playgroud)

html javascript canvas

3
推荐指数
1
解决办法
3042
查看次数

将图像转换为已经加载的画布

我正在开发一个插件,在该插件中我将 Image 转换为 Canvas 并存储为数据 url 。此函数触发 'load' 事件,但如何转换页面上已有的图像?(不想刷新页面或再次加载任何图像)。我尝试使用 Filereader() 函数,但这也适用于“onload”概念。那么如何在用户点击图片时将图片保存为数据 url 呢?

   image.addEventListener("load", function () {

         var imgCanvas = document.createElement("canvas"),
            imgContext = imgCanvas.getContext("2d");
            imgCanvas.width = image.width;
            imgCanvas.height = image.height;

            imgContext.drawImage(image, 0, 0, image.width, image.height);       
            imgInfo = imgCanvas.toDataURL("image/png");

            localStorage.setItem("imgInfo", imgInfo);
        }, false);
Run Code Online (Sandbox Code Playgroud)

javascript jquery base64 canvas

3
推荐指数
1
解决办法
2万
查看次数

从base 64 String绘制Canvas图片时出错

我想绘制一个base64字符串到画布bur我总是得到错误

TypeError:CanvasRenderingContext2D.drawImage的参数1无法转换为以下任何一个:HTMLImageElement,HTMLCanvasElement,HTMLVideoElement.

我确实谷歌了,但我仍然不知道我做错了什么.

var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
var ctx = canvas.getContext("2d");
var data =  "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMCRUiMrIBQVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12NgoC4AAABQAAEiE+h1AAAAAElFTkSuQmCC";
ctx.drawImage(data, 0, 0);
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴.

javascript canvas

2
推荐指数
1
解决办法
6397
查看次数

如何在 Angular 中将本地图像文件转换为 Base64?

我在本地文件夹中有一个图像:assets/img/xyz.JPEG,我想将其转换为 base64。请提供在 Angular 8 中执行此操作所需的代码

我尝试使用文件阅读器和 btoa 但没有成功。

var reader = new FileReader();
var binaryString = reader.readAsDataURL('assets/img/xyz.JPEG');
var image = btoa(binaryString);
Run Code Online (Sandbox Code Playgroud)

base64 image angular

2
推荐指数
1
解决办法
8591
查看次数

无法使用pdfmake显示pdf文档中的本地图像

我正在尝试向 pdfMake 生成的 pdf 文档添加徽标。这是我的代码:

import {Injectable} from '@angular/core';
import pdfMake from 'pdfmake/build/pdfmake';
import pdfFonts from 'pdfmake/build/vfs_fonts';

pdfMake.vfs = pdfFonts.pdfMake.vfs;

@Injectable({
  providedIn: 'root'
})
export class PdfService {

  constructor() { }

  getDocumentDefinition(id: number, companyName, productName) {
    // productEvalDate: Date
    // getDocumentDefinition(id: number, productName: string, companyName) {

    return {
      content: [{
        image: '.assets/images/GPBC-logo-2019.jpg',
        width: 150,
        text: 'The product, listed below, produced for the company listed below, is PLANT-BASED certified ' +
          'under XXX Certification.\n \n' +
          'Name of Product: ' + …
Run Code Online (Sandbox Code Playgroud)

image pdfmake angular

2
推荐指数
1
解决办法
1万
查看次数

将图像数据添加到html文件中?

我的目标是创建一个 HTML 文件,其中包含正常运行所需的所有内容。

我已将 .css 的内容添加到<style>标签之间的 html head 中,将我的 javascript 添加到标签之间的结束正文标签之前<script>,但是如何对图像执行相同的操作?

如果我将 HTML 复制到另一台计算机,“img”标签的“src”显然将不起作用。

有什么建议么?

html image

1
推荐指数
1
解决办法
4408
查看次数

尝试让 CORS 适用于 4chan API

介绍

我正在编写一个脚本,它将改变人们在线程内查看 4chan 的方式,并添加一些功能。

在 4chan 线程中,当您上传图像时,服务器将生成与原始文件同名的缩略图,并保存该图像以供人们查看,但名称为 unix 时间戳。当您单击缩略图时,它src会更改为其父级的href,这意味着图像的名称只是时间戳,根本不是一个有用的名称。

这有两个问题

  1. 当线程出现 404 错误时,您可能无法再打开图像,因为它已从服务器中删除。
  2. 您下载的图像名称与显示的名称不匹配。

此 SO 答案中,您可以看到唯一能够处理所有类型文件(我应该能够加载 jpg、png、gif 和 webm)的无损方法是对服务器进行查询,请求文件,读取它并将其转换为数据 URI。当图像缓存在src属性内时,我可以(根据此 SO 答案)简单地添加download具有原始文件名的属性,我的两点将得到解决。

问题

我使用Chrome 扩展Styler将以下脚本注入到 4chan 中。

$(function(){
  if ($('body').hasClass('is_thread')) {
    $.getScript("http://my.url/updater.js").done(function() {
      $('html').addClass('done')
    }).fail(function() {
      $('html').addClass('done failed')
    })
  }
})
Run Code Online (Sandbox Code Playgroud)

然后,我的 url 处的脚本将加载到文档本身中,并从那里开始执行自己的操作(我计划与某些人共享代码,这就是我(暂时)将脚本放在服务器上的原因)。

脚本内部有一个部分会循环所有新帖子并尝试再次请求该文件。

var $media = $post.find('img, video')
if ($media.length) {
  $.ajax({
    url: $media.parent().attr('href'),
    method: 'GET',
    success: function (data) {
      console.log(data)
    },
    error: …
Run Code Online (Sandbox Code Playgroud)

javascript xmlhttprequest access-control cors

0
推荐指数
1
解决办法
1291
查看次数

当通过nodemailer-node.js作为电子邮件发送时,html中的图像不显示?

我正在使用node.js中的nodemailer发送html电子邮件,我正在使用电子邮件模板npm包的模板概念发送[ https://www.npmjs.com/package/email-templates]

此处,电子邮件已成功发送,但收到时,HTML 中的图像未显示在电子邮件上。

这是发送邮件的主文件:

const nodemailer = require("nodemailer");
var Email = require('email-templates');
const path = require('path');

var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
      user: 'test@gmail.com',
      pass: 'password'
    }
  });

  const email = new Email({
    transport: transporter,
    send: true,
    preview: false,
    views: {
        options: {
          extension: 'ejs' 
        }
      },
    juice: true,
        juiceResources: {
            preserveImportant: true,
                webResources: {
                    relativeTo: path.join(__dirname,'./templates/emailCampaign/images')
            }
    }
  });

  email.send({
    template:path.join(__dirname,'./templates/emailCampaign'),
    message: {
      from: 'test@gmail.com',
      to: 'test@gmail.com',
    },
    locals: {
        tournament_name:"tournament_name",
        date:"date",
        time:"time",
        fee:"4",
        sections:"sections", …
Run Code Online (Sandbox Code Playgroud)

javascript email node.js nodemailer

0
推荐指数
1
解决办法
9044
查看次数