【问题标题】:Convert <img src="phone.png"> to Base64 <img src="data:img/png;base64,...."> by compiling the app, to make the image load instantly with the app通过编译应用程序将<img src="phone.png"> 转换为Base64 <img src="data:img/png;base64,....">,使应用程序立即加载图像
【发布时间】:2019-12-21 14:02:35
【问题描述】:

这是一个独特的问题: 我不想使用浏览器 javascript 来解决这个问题,请继续阅读...


我想通过编译应用程序(ng buildng serve)将 &lt;img src="..."&gt; 转换为 Base64 img 标签,以使图像立即加载 - 除了应用程序本身之外无需进一步下载,但也在开发应用时使图像动态变化。

例如,这是一个组件 - home.component.html

编译前的代码(注意 base64 指令,不过它只是一个想法):

&lt;img src="assets/images/phone.png" base64&gt;

编译后想要的代码:

&lt;img src="data:image/png;base64,iVBORw0......rest-of-base-64-goes-here"&gt;


重要提示:这应该发生在没有用户运行前端 javascript 操作或调用图像文件的情况下。 (也就是说,编译时文件phone.png 甚至都不存在)

我还是想在开发的时候编辑本地图片phone.png

我知道我可以手动将文件转换为 base64 并在我的组件中更新它,但这正是我不想做的——我希望它自动发生以节省时间。

这意味着图像将位于组件本身中,位于已编译的 .js 文件之一中,因此会立即与应用一起加载。


想法:如果有一个指令可以解决这个问题,那就太好了。

类似&lt;img src="phone.png base64&gt;**

我认为它可以通过某种方式使用 node/webpack 完成,但我不知道如何。

【问题讨论】:

  • @SmokeyDawson 与那里的角度组件无关
  • angular 是 javascript,最好的办法是创建一个 convertToBase64() 方法,该方法遵循链接问题中的答案之一,然后在您的 html 中执行此操作 [src]="convertToBase64('assets/images/home/home-phone.png')"
  • @SmokeyDawson 我理解你的回答,但是我不想在用户的前端编译它。我希望它在我运行 ng build 并移动到我的 JS 块文件时编译。

标签: node.js angular webpack base64 angular-cli


【解决方案1】:

你需要使用readAsDataUrl()

function getBase64(event) {
   let me = this;
   let file = event.target.files[0];
   let reader = new FileReader();
   reader.readAsDataURL(file);
   reader.onload = function () {
     //me.modelvalue = reader.result;
     console.log(reader.result);
   };
   reader.onerror = function (error) {
     console.log('Error: ', error);
   };
}

希望能帮到你..

【讨论】:

  • 感谢您抽出宝贵时间@Shah。运行ng build时如何使文件编译为base64?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
相关资源
最近更新 更多