整合營(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 | 日韩久久精品一区二区三区| 天堂一区人妻无码| 国产精品 视频一区 二区三区| 91精品一区二区| 久久精品国产亚洲一区二区三区| 国产精品久久久久久一区二区三区 | 风间由美在线亚洲一区| 久久精品一区二区国产| 国产一区在线视频观看| 亚洲一区欧洲一区| 日本免费一区二区三区四区五六区| а天堂中文最新一区二区三区| 免费看无码自慰一区二区 | 国产激情з∠视频一区二区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 精品福利一区二区三区免费视频| 精品久久国产一区二区三区香蕉| 免费萌白酱国产一区二区| 性色AV一区二区三区天美传媒| 99久久人妻精品免费一区| 久久久久一区二区三区| 国产成人久久精品麻豆一区| 色欲AV无码一区二区三区| 欧洲精品一区二区三区| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲一区在线观看视频| 亚洲国产精品一区| 久久精品黄AA片一区二区三区| 亚洲AV无码一区东京热久久| 国产suv精品一区二区33| 国产免费一区二区视频| 亚洲韩国精品无码一区二区三区| 精品久久国产一区二区三区香蕉 | 亚洲国产精品一区| 91视频一区二区| 国产高清在线精品一区| 亚洲色一区二区三区四区| 蜜臀AV无码一区二区三区| 日韩一区二区a片免费观看| 成人无码精品一区二区三区|