Heim > Web-Frontend > View.js > Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

青灯夜游
Freigeben: 2021-11-26 19:43:54
nach vorne
7556 Leute haben es durchsucht

Dieser Artikel stellt Ihnen ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in vor, das keine Freunde hat. Es kann Bilder drehen, zoomen, zuschneiden, mit Anmerkungen versehen, Text hinzufügen usw.

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

[Verwandte Empfehlung: „vue.js Tutorial“]

Kürzlich haben Lehrer eine neue Anforderung gestellt, die Bildhausaufgaben der Schüler zu korrigieren, was Drehen, Skalieren, Zuschneiden, Graffiti und Anmerkungen erfordert von Bildern. , Text hinzufügen usw. Auf den ersten Blick hört es sich so an, als würden viele Haare ausfallen. Gibt es ein leistungsstarkes Plug-In, das die oben genannten Funktionen erreichen kann, sodass ich mehr Zeit habe, Frauen während Double Eleven vom Kauf von Tickets abzuhalten? Die Antwort ist natürlich ja.

Effektanzeige

Graffiti

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Zuschneiden

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Anmerkung

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Drehen

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Filter

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Ist es nicht sehr mächtig! Es gibt noch viele weitere Funktionen, die ich Ihnen nicht einzeln zeigen werde. Worauf warten Sie noch? Kommen Sie und nutzen Sie es mit mir.

npm i tui-image-editor
// or
yarn add tui-image-editor
Nach dem Login kopieren

Sie können sehen, dass das Live-Bildbearbeitungstool angezeigt wird:

Internationalisierung

Da es von Ausländern entwickelt wurde, sind die Standardtextbeschreibungen alle auf Englisch. Hier werden wir sie chinesisch machen Zuerst:

<template>
  <div>
    <div id="tui-image-editor"></div>
  </div>
</template>
<script>
import "tui-image-editor/dist/tui-image-editor.css";
import "tui-color-picker/dist/tui-color-picker.css";
import ImageEditor from "tui-image-editor";
export default {
  data() {
    return {
      instance: null,
    };
  },
  mounted() {
    this.init();
  },
  methods: {
    init() {
      this.instance = new ImageEditor(
        document.querySelector("#tui-image-editor"),
        {
          includeUI: {
            loadImage: {
              path: "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",
              name: "image",
            },
            initMenu: "draw", // 默认打开的菜单项
            menuBarPosition: "bottom", // 菜单所在的位置
          },
          cssMaxWidth: 1000, // canvas 最大宽度
          cssMaxHeight: 600, // canvas 最大高度
        }
      );
      document.getElementsByClassName("tui-image-editor-main")[0].style.top = "45px"; // 图片距顶部工具栏的距离
    },
  },
};
</script>

<style scoped>
.drawing-container {
  height: 900px;
}
</style>
Nach dem Login kopieren

Der Effekt ist wie folgt:

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Benutzerdefinierter Stil

Der Standardstil ist dunkel, wenn Sie ihn in einen weißen Hintergrund ändern oder die Größe, Farbe usw. ändern möchten Mit der Schaltfläche können Sie einen benutzerdefinierten Stil verwenden.

const locale_zh = {
  ZoomIn: "放大",
  ZoomOut: "缩小",
  Hand: "手掌",
  History: &#39;历史&#39;,
  Resize: &#39;调整宽高&#39;,
  Crop: "裁剪",
  DeleteAll: "全部删除",
  Delete: "删除",
  Undo: "撤销",
  Redo: "反撤销",
  Reset: "重置",
  Flip: "镜像",
  Rotate: "旋转",
  Draw: "画",
  Shape: "形状标注",
  Icon: "图标标注",
  Text: "文字标注",
  Mask: "遮罩",
  Filter: "滤镜",
  Bold: "加粗",
  Italic: "斜体",
  Underline: "下划线",
  Left: "左对齐",
  Center: "居中",
  Right: "右对齐",
  Color: "颜色",
  "Text size": "字体大小",
  Custom: "自定义",
  Square: "正方形",
  Apply: "应用",
  Cancel: "取消",
  "Flip X": "X 轴",
  "Flip Y": "Y 轴",
  Range: "区间",
  Stroke: "描边",
  Fill: "填充",
  Circle: "圆",
  Triangle: "三角",
  Rectangle: "矩形",
  Free: "曲线",
  Straight: "直线",
  Arrow: "箭头",
  "Arrow-2": "箭头2",
  "Arrow-3": "箭头3",
  "Star-1": "星星1",
  "Star-2": "星星2",
  Polygon: "多边形",
  Location: "定位",
  Heart: "心形",
  Bubble: "气泡",
  "Custom icon": "自定义图标",
  "Load Mask Image": "加载蒙层图片",
  Grayscale: "灰度",
  Blur: "模糊",
  Sharpen: "锐化",
  Emboss: "浮雕",
  "Remove White": "除去白色",
  Distance: "距离",
  Brightness: "亮度",
  Noise: "噪音",
  "Color Filter": "彩色滤镜",
  Sepia: "棕色",
  Sepia2: "棕色2",
  Invert: "负片",
  Pixelate: "像素化",
  Threshold: "阈值",
  Tint: "色调",
  Multiply: "正片叠底",
  Blend: "混合色",
  Width: "宽度",
  Height: "高度",
  "Lock Aspect Ratio": "锁定宽高比例",
};

this.instance = new ImageEditor(
  document.querySelector("#tui-image-editor"),
  {
    includeUI: {
      loadImage: {
        path: "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",
        name: "image",
      },
      initMenu: "draw", // 默认打开的菜单项
      menuBarPosition: "bottom", // 菜单所在的位置
      locale: locale_zh, // 本地化语言为中文
    },
    cssMaxWidth: 1000, // canvas 最大宽度
    cssMaxHeight: 600, // canvas 最大高度
  }
);
Nach dem Login kopieren

Der Effekt ist wie folgt:

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Schaltflächenoptimierung

Durch Anpassen des Stils sehen wir, dass die Schaltflächen „Laden“ und „Herunterladen“ in der oberen rechten Ecke ausgeblendet wurden, und dann werden wir andere Schaltflächen ausblenden, die nicht ausgeblendet sind verwenden (je nach erforderlichem Unternehmen) und fügen Sie eine Schaltfläche zum Speichern des Bildes hinzu.

const customTheme = {
  "common.bi.image": "", // 左上角logo图片
  "common.bisize.width": "0px",
  "common.bisize.height": "0px",
  "common.backgroundImage": "none",
  "common.backgroundColor": "#f3f4f6",
  "common.border": "1px solid #333",

  // header
  "header.backgroundImage": "none",
  "header.backgroundColor": "#f3f4f6",
  "header.border": "0px",
  
  // load button
  "loadButton.backgroundColor": "#fff",
  "loadButton.border": "1px solid #ddd",
  "loadButton.color": "#222",
  "loadButton.fontFamily": "NotoSans, sans-serif",
  "loadButton.fontSize": "12px",
  "loadButton.display": "none", // 隐藏

  // download button
  "downloadButton.backgroundColor": "#fdba3b",
  "downloadButton.border": "1px solid #fdba3b",
  "downloadButton.color": "#fff",
  "downloadButton.fontFamily": "NotoSans, sans-serif",
  "downloadButton.fontSize": "12px",
  "downloadButton.display": "none", // 隐藏

  // icons default
  "menu.normalIcon.color": "#8a8a8a",
  "menu.activeIcon.color": "#555555",
  "menu.disabledIcon.color": "#ccc",
  "menu.hoverIcon.color": "#e9e9e9",
  "submenu.normalIcon.color": "#8a8a8a",
  "submenu.activeIcon.color": "#e9e9e9",

  "menu.iconSize.width": "24px",
  "menu.iconSize.height": "24px",
  "submenu.iconSize.width": "32px",
  "submenu.iconSize.height": "32px",

  // submenu primary color
  "submenu.backgroundColor": "#1e1e1e",
  "submenu.partition.color": "#858585",

  // submenu labels
  "submenu.normalLabel.color": "#858585",
  "submenu.normalLabel.fontWeight": "lighter",
  "submenu.activeLabel.color": "#fff",
  "submenu.activeLabel.fontWeight": "lighter",

  // checkbox style
  "checkbox.border": "1px solid #ccc",
  "checkbox.backgroundColor": "#fff",

  // rango style
  "range.pointer.color": "#fff",
  "range.bar.color": "#666",
  "range.subbar.color": "#d1d1d1",

  "range.disabledPointer.color": "#414141",
  "range.disabledBar.color": "#282828",
  "range.disabledSubbar.color": "#414141",

  "range.value.color": "#fff",
  "range.value.fontWeight": "lighter",
  "range.value.fontSize": "11px",
  "range.value.border": "1px solid #353535",
  "range.value.backgroundColor": "#151515",
  "range.title.color": "#fff",
  "range.title.fontWeight": "lighter",

  // colorpicker style
  "colorpicker.button.border": "1px solid #1e1e1e",
  "colorpicker.title.color": "#fff",
};

this.instance = new ImageEditor(
  document.querySelector("#tui-image-editor"),
  {
    includeUI: {
      loadImage: {
        path: "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",
        name: "image",
      },
      initMenu: "draw", // 默认打开的菜单项
      menuBarPosition: "bottom", // 菜单所在的位置
      locale: locale_zh, // 本地化语言为中文
      theme: customTheme, // 自定义样式
    },
    cssMaxWidth: 1000, // canvas 最大宽度
    cssMaxHeight: 600, // canvas 最大高度
  }
);
Nach dem Login kopieren

Der Effekt ist wie folgt:

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)

Sie können sehen, dass die Reset-Taste oben und die Spiegel- und Maskentasten unten verschwunden sind. In der oberen rechten Ecke befindet sich eine zusätzliche eigene Schaltfläche zum Speichern. Klicken Sie auf die Schaltfläche, um die Base64-Datei und die Blob-Datei abzurufen.

Vollständiger Code

<template>
  <div>
    <div id="tui-image-editor"></div>
    <el-button type="primary" size="small" @click="save">保存</el-button>
  </div>
</template>

// ...
methods: {
  init() {
    this.instance = new ImageEditor(
      document.querySelector("#tui-image-editor"),
      {
        includeUI: {
          loadImage: {
            path: "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",
            name: "image",
          },
          menu: ["resize", "crop", "rotate", "draw", "shape", "icon", "text", "filter"], // 底部菜单按钮列表 隐藏镜像flip和遮罩mask
          initMenu: "draw", // 默认打开的菜单项
          menuBarPosition: "bottom", // 菜单所在的位置
          locale: locale_zh, // 本地化语言为中文
          theme: customTheme, // 自定义样式
        },
        cssMaxWidth: 1000, // canvas 最大宽度
        cssMaxHeight: 600, // canvas 最大高度
      }
    );
    document.getElementsByClassName("tui-image-editor-main")[0].style.top ="45px"; // 调整图片显示位置
    document.getElementsByClassName("tie-btn-reset tui-image-editor-item help") [0].style.display = "none";  // 隐藏顶部重置按钮
  },
  // 保存图片,并上传
  save() {
    const base64String = this.instance.toDataURL(); // base64 文件
    const data = window.atob(base64String.split(",")[1]);
    const ia = new Uint8Array(data.length);
    for (let i = 0; i < data.length; i++) {
      ia[i] = data.charCodeAt(i);
    }
    const blob = new Blob([ia], { type: "image/png" }); // blob 文件
    const form = new FormData();
    form.append("image", blob);
    // upload file
  },
}

<style scoped>
.drawing-container {
  height: 900px;
  position: relative;
  .save {
    position: absolute;
    right: 50px;
    top: 15px;
  }
}
</style>
Nach dem Login kopieren
Zusammenfassung

Teilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!)Das Obige ist die grundlegende Verwendung von tui.image-editor. Im Vergleich zu anderen Plug-Ins hat tui.image-editor den Vorteil, dass es leistungsstark und einfach zu verwenden ist.

Obwohl das Plug-in einfach zu verwenden ist, habe ich auch einen kleinen Fehler gefunden. Wenn ich das Bild vergrößere, die Anzeigeposition mit meiner Handfläche ziehe und dann auf die Schaltfläche „Zurücksetzen“ klicke, verschwindet das Bild möglicherweise. Es gibt zwei Lösungen: Eine besteht darin, den Quellcode zu ändern und die Methode „resetZoom“ aufzurufen, um das Zoomverhältnis wiederherzustellen. Die andere besteht darin, selbst eine Schaltfläche „Zurücksetzen“ zu erstellen und nach dem Klicken die Methode „this.init“ zum erneuten Rendern aufzurufen .

Wenn Sie anderen Rosen schenken, hinterlassen Sie einen anhaltenden Duft in Ihren Händen. Wenn Sie es nützlich finden, geben Sie ihm einfach einen Daumen nach oben und geben Sie ihm einen Daumen nach oben~

Weitere APIs und Demos finden Sie unter:

Github-Adresse: https://github.com/nhn/tui.image -editor

API- und Beispieladresse: http://nhn.github.io/tui.image-editor/latest

Dieser Artikel wurde reproduziert von: https://juejin.cn/post/7027943745530101773

Autor : Front-End A Fei

Weitere Informationen zum Programmieren finden Sie unter:
Einführung in die Programmierung
! !

Das obige ist der detaillierte Inhalt vonTeilen Sie ein leistungsstarkes Vue-Bildbearbeitungs-Plug-in (kommen Sie vorbei und probieren Sie es aus!). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
vue
Quelle:掘金社区--前端阿飞
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage