整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          js圖片數(shù)據(jù)轉(zhuǎn)換操作

          要識(shí)別圖片類型,然后進(jìn)行轉(zhuǎn)換;

          function btoimg(buffer) {

          var mime;

          var a = new Uint8Array(buffer);

          var nb = a.length;

          if (nb < 4)

          return null;

          var b0 = a[0];

          var b1 = a[1];

          var b2 = a[2];

          var b3 = a[3];

          if (b0 == 0x89 && b1 == 0x50 && b2 == 0x4E && b3 == 0x47)

          mime = 'image/png';

          else if (b0 == 0xff && b1 == 0xd8)

          mime = 'image/jpeg';

          else if (b0 == 0x47 && b1 == 0x49 && b2 == 0x46)

          mime = 'image/gif';

          else

          return null;

          var binary = "";

          for (var i = 0; i < nb; i++)

          binary += String.fromCharCode(a[i]);

          var base64 = window.btoa(binary);

          var image = new Image();

          //image.onload = onLoad;

          image.id = "upload";

          image.src = 'data:' + mime + ';base64,' + base64;

          return image;

          }

          、背景

          今天項(xiàng)目中牽涉到一個(gè)html圖片生成的需求,然后就發(fā)現(xiàn)了這個(gè)第三方的js -- html2canvas

          PS: 附上官方使用文檔 http://html2canvas.hertzen.com/

          二、說(shuō)一下簡(jiǎn)明使用教程吧

          ①引入JS

          可以在官方下載,也可以使用CDN

          ②在需要的html中指定操作元素

          <div id="capture" style="padding:2rem;">

          // your code ...

          </div>


          ③調(diào)用指定的方法

          export(){

          html2canvas(document.querySelector("#capture")).then(canvas => {
          saveFile(canvas.toDataURL(),"ccc.png");
          });
          }

          saveFile(data, filename){
          const save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
          save_link.href = data;
          save_link.download = filename;
          const event = document.createEvent('MouseEvents');
          event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
          save_link.dispatchEvent(event);
          };


          三、附上主要代碼段

          avaScript通過(guò)使用插件對(duì)jpg文件屬性信息進(jìn)行讀寫

          1、讀取JPG屬性信息

          Exif.js 地址: https://github.com/exif-js/exif-js

          代碼實(shí)現(xiàn):

          <script src="exif.js"></script>
          EXIF.getData(document.getElementById('imgElement'), function(){
            EXIF.getAllTags(this);
            EXIF.getTag(this, 'Orientation');
            EXIF.getAllTags(this)
            EXIF.pretty(this);
          });

          引用信息:http://code.ciaoca.com/javascript/exif-js/


          2、寫入JPG屬性信息

          Piexifjs 地址:https://github.com/hMatoba/piexifjs

          其實(shí)Piexifjs功能已經(jīng)支持了圖片屬性信息的讀取和寫入

          代碼實(shí)現(xiàn):

          <script src="piexif.js"></script>
          var zeroth = {};
          var exif = {};
          var gps = {};
          zeroth[piexif.ImageIFD.Make] = "Make";
          zeroth[piexif.ImageIFD.XResolution] = [777, 1];
          zeroth[piexif.ImageIFD.YResolution] = [777, 1];
          zeroth[piexif.ImageIFD.Software] = "Piexifjs";
          zeroth[piexif.ImageIFD.Artist] = "作者";
          exif[piexif.ExifIFD.DateTimeOriginal] = "2010:10:10 10:10:10";
          exif[piexif.ExifIFD.LensMake] = "LensMake";
          exif[piexif.ExifIFD.Sharpness] = 777;
          exif[piexif.ExifIFD.LensSpecification] = [[1, 1], [1, 1], [1, 1], [1, 1]];
          gps[piexif.GPSIFD.GPSVersionID] = [7, 7, 7, 7];
          gps[piexif.GPSIFD.GPSDateStamp] = "1999:99:99 99:99:99";
          //此處屬性信息根據(jù)需要變更進(jìn)行設(shè)置
          var exifObj = {"0th":zeroth, "Exif":exif, "GPS":gps};
          var exifbytes = piexif.dump(exifObj);
          //插入屬性信息,生成新圖片
          var newJpeg = piexif.insert(exifbytes, jpegData)

          例子:

          <input type="file" id="files" />
          <script source="/js/piexif.js" />
          <script>
          function handleFileSelect(evt) {
              var file = evt.target.files[0];
          
              var zeroth = {};
              var exif = {};
              var gps = {};
              zeroth[piexif.ImageIFD.Make] = "Make";
              zeroth[piexif.ImageIFD.XResolution] = [777, 1];
              zeroth[piexif.ImageIFD.YResolution] = [777, 1];
              zeroth[piexif.ImageIFD.Software] = "Piexifjs";
              exif[piexif.ExifIFD.DateTimeOriginal] = "2010:10:10 10:10:10";
              exif[piexif.ExifIFD.LensMake] = "LensMake";
              exif[piexif.ExifIFD.Sharpness] = 777;
              exif[piexif.ExifIFD.LensSpecification] = [[1, 1], [1, 1], [1, 1], [1, 1]];
              gps[piexif.GPSIFD.GPSVersionID] = [7, 7, 7, 7];
              gps[piexif.GPSIFD.GPSDateStamp] = "1999:99:99 99:99:99";
              var exifObj = {"0th":zeroth, "Exif":exif, "GPS":gps};
              var exifbytes = piexif.dump(exifObj);
          
              var reader = new FileReader();
              reader.onload = function(e) {
                  var inserted = piexif.insert(exifbytes, e.target.result);
          
                  var image = new Image();
                  image.src = inserted;
                  image.width = 200;
                  var el = $("<div></div>").append(image);
                  $("#resized").prepend(el);
              };
              reader.readAsDataURL(file);
          }
          
          document.getElementById('files').addEventListener('change', handleFileSelect, false);
          </script>

          引用信息:https://piexifjs.readthedocs.io/en/latest/functions.html


          主站蜘蛛池模板: 亚洲AV无码一区二区三区性色| 波多野结衣中文一区二区免费| 精品国产一区二区三区香蕉事| 日韩电影一区二区| 国产在线第一区二区三区| 国产电影一区二区| 人妻无码第一区二区三区| 亚洲高清一区二区三区| 一区二区不卡视频在线观看| 无码精品一区二区三区在线| 午夜AV内射一区二区三区红桃视| 一区三区三区不卡| 国产精品成人免费一区二区| 亚洲国产一区在线| 麻豆视频一区二区三区| 免费高清av一区二区三区| 老熟妇仑乱一区二区视頻| 亚洲一区二区三区无码影院| 亚洲精品精华液一区二区 | 麻豆视传媒一区二区三区| 乱码精品一区二区三区| 国产自产V一区二区三区C| 国产伦精品一区二区三区视频金莲 | 四虎在线观看一区二区| 精品国产一区二区三区无码| 香蕉免费一区二区三区| 成人区人妻精品一区二区不卡视频 | 国产萌白酱在线一区二区| 在线播放国产一区二区三区| 搡老熟女老女人一区二区| 亚洲AV综合色区无码一区爱AV | 日本高清一区二区三区| 国产日韩视频一区| 日本在线观看一区二区三区| 一区二区三区在线观看中文字幕| 日本视频一区二区三区| 一区二区三区无码视频免费福利| 亚洲不卡av不卡一区二区| 2021国产精品视频一区| 日本在线视频一区二区三区| 亚洲国产成人久久综合一区77|