ionic3&angular 海报和二维码合成一张图片并保存

本文介绍如何在Ionic3与Angular中生成二维码,将图片与二维码合成一张图片,并以base64格式保存至相册。首先,通过安装angular2-qrcode插件生成二维码;其次,利用html2canvas合成图片,解决跨域问题;最后,借助Base64ToGallery插件保存合成的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ionic3&angular 一张图片和二维码合成一张图片并保存

1.(ionic3)生成一个二维码

导入插件(ionic3需要在app.module引用,ionic4只在对象module引用就ok)

npm install angular2-qrcode --save

app.module中引入插件模块

//第三方插件模块
import { QRCodeModule } from ‘angular2-qrcode’;

html部分:

<qr-code [value]=“qrCodeValue”>

ts部分:

export class MyPostPage {
  //二维码变量
  qrCodeValue:String;
  constructor() {
    //初始化二维码
    this.qrCodeValue="生成二维码内容";
  }
}

2.合成图片

这里使用html2canvas 官网https://html2canvas.hertzen.com/
html2canvas存在资源跨域的问题(我是把本地图片转换成base64格式解决跨域https://blog.youkuaiyun.com/weixin_42869574/article/details/87169479)
1.在index.html引用

  <script src="assets/js/html2canvas.min.js"></script>

2.声明html2canvas;

import {ActionSheetController} from 'ionic-angular';
import {Base64ToGallery, Base64ToGalleryOptions} from '@ionic-native/base64-to-gallery';

declare var html2canvas;
export class MyPostPage {
	  //二维码变量
	  qrCodeValue:String;
	  constructor(public actionSheetCtrl:ActionSheetController) {
	    //初始化二维码
	    this.qrCodeValue="生成二维码内容";
	  }
}

3.合成图片

html部分:

  <div class="vCode">
    <img src="xxxxx" id="img">
    <qr-code  [value]="qrCodeValue"></qr-code>
  </div>

ts部分:

  html2canvas(){
    var that=this;
    html2canvas(document.querySelector('.vCode'),{useCORS:true}).then(function (canvas) {
      //获取年月日作为文件名
      var timers=new Date();
      var fullYear=timers.getFullYear();
      var month=timers.getMonth()+1;
      var date=timers.getDate();
      var randoms=Math.random()+'';
      //年月日加上随机数
      var numberFileName=fullYear+''+month+date+randoms.slice(3,10);
      var imgData=canvas.toDataURL();
      that.presentActionSheet(imgData);
    })
  }
  // 弹出选择框
  presentActionSheet(imgUrl:string) {
    let actionSheet = this.actionSheetCtrl.create({
      title: '提示',
      buttons: [
        {
          text: '保存到相册',
          role: 'destructive',
          handler: () => {
            // 保存图片
            this.saveImg(imgUrl);
          }
        },
        {
          text: '取消',
          role: 'cancel',
          handler: () => {}
        }
      ]
    });
    actionSheet.present();
  }

3.保存图片(base64格式)

引用插件Base64ToGallery

ionic cordova plugin add cordova-base64-to-gallery
npm install @ionic-native/base64-to-gallery

app.module中引入插件模块

import { Base64ToGallery } from ‘@ionic-native/base64-to-gallery’;

ts部分:
导入查看权限依赖

import{ AndroidPermissions }from’@ionic-native/android-permissions’;

  saveImg(base64Data) {
    if (!this.hasWriteAccess) {
      this.checkPermissions();
    }
    let options: Base64ToGalleryOptions = {
      prefix: '_img',
      mediaScanner: true
    };
    this.base64ToGallery.base64ToGallery(base64Data, options).then(
      res => {this.app.alert("","保存成功")},
      err => {}
    );
  }
    //检查权限
  checkPermissions() {
    this.androidPermissions
      .checkPermission(this.androidPermissions
        .PERMISSION.WRITE_EXTERNAL_STORAGE)
      .then((result) => {
        console.log('Has permission?',result.hasPermission);
        this.hasWriteAccess = result.hasPermission;
      },(err) => {
        this.androidPermissions
          .requestPermission(this.androidPermissions
            .PERMISSION.WRITE_EXTERNAL_STORAGE);
      });
    if (!this.hasWriteAccess) {
      this.androidPermissions
        .requestPermissions([this.androidPermissions
          .PERMISSION.WRITE_EXTERNAL_STORAGE]);
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值