Vueはプラグインを使用して画像を比例してカットします

Vueはプラグインを使用して画像を比例してカットします

この記事では、プラグインを使用して画像の比例カットを実現するVueの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

1. プラグインを使用する - vueCropper

プラグインをインストールします: npm install vue-cropper
el-elementアップロードコンポーネントと組み合わせる

2. 例:

メインページ

データ(){
 戻る {
     フォームデータ:{
        現在のバナー画像:""
     },
     isShowCropper :false、
 }
}
<el-アップロード
      クラス="アバターアップローダー"
      リストタイプ="絵カード"
      アクション=""
      accept=".jpg、.jpeg、.png"
      :資格情報あり="true"
      :on-change="ファイル変更バナー"
      :自動アップロード="false"
      :ファイルリストを表示="false"
    >
    <div class="imgBoX">
        <img class="bannerImg" v-if="formData.currentBannerImg" title="クリックして変更" :src="formData.currentBannerImg" alt="" />
        <i class="el-icon-delete delImg" v-if="formData.currentBannerImg" title="削除"></i>
        <i v-if="!formData.currentBannerImg" slot="default" class="el-icon-plus"></i>
      </div>
      <div slot="tip" class="el-upload__tip">アップロードできるのは jpg、jpeg、png のみで、1 つのファイルのサイズは 10 MB を超えることはできません</div>
</el-アップロード>

// 画像をアップロードし、成功したらトリミングします async fileChangeBanner(file, fileList) {
      定数 fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
      const fileTypeArr = ["jpg", "jpeg", "png", "JPG", "JPEG", "PNG"];
      (fileTypeArr.indexOf(fileType) < 0) の場合 {
        this.$alert("jpg、jpeg、またはpng形式の画像をアップロードしてください!"、"システムプロンプト", {
          confirmButtonText: 「確認」
        });
        ファイルリストを連結します(ファイルリストの長さ - 1);
        戻る;
      }
      // サイズ制限 const isLt2M = file.size / 1024 / 1024 < this.$FileSize;
      もし (!isLt2M) {
        this.$alert(`アップロードされたファイルのサイズは ${this.$FileSize}MB を超えることはできません!`, "システムプロンプト", {
          confirmButtonText: 「確認」
        });
        ファイルリストを連結します(ファイルリストの長さ - 1);
        戻る;
      }
      // 切り抜き部分を追加します this.isShowCropper = true;
      this.$nextTick(() => {
        this.$refs.vueCropperDialog.open(ファイル);
      });
    },

vueCropperDialogがコンポーネントとして導入されました

<vueCropperDialog @cutImgEnter="cutImgEnter" v-if="isShowCropper" ref="vueCropperDialog"></vueCropperDialog>

vueクロッパーダイアログ.vue

<!-- -->
<テンプレート>
  <!-- vueCropper による画像の切り取りの実装 -->
  <el-dialog title="画像の切り抜き" :visible.sync="dialogVisible" append-to-body>
    <div class="cropper-content">
      <div class="cropper" style="text-align:center">
        <vueクロッパー
          ref="クロッパー"
          :img="オプション.img"
          :outputSize="オプションのサイズ"
          :outputType="オプション.outputType"
          :info="true"
          :full="オプション.full"
          :canMove="オプション.canMove"
          :canMoveBox="オプション.canMoveBox"
          :original="オプション.original"
          :autoCrop="オプション.autoCrop"
          :fixed="オプション.fixed"
          :fixedNumber="オプション.fixedNumber"
          :centerBox="オプション.centerBox"
          :infoTrue="オプション.infoTrue"
          :fixedBox="オプション.fixedBox"
        </vueクロッパー>
      </div>
    </div>
    <div スロット="フッター" クラス="ダイアログ フッター btnBox">
      <div>
        <el-button icon="el-icon-refresh-left" @click="turnLeftOrRight('left')">左に回転</el-button>
        <el-button icon="el-icon-refresh-right" @click="turnLeftOrRight('right')">右に回転</el-button>
      </div>
      <div>
        <el-button @click="dialogVisible = false">キャンセル</el-button>
        <el-button type="primary" @click="finish" :loading="loading">確認</el-button>
      </div>
    </div>
  </el-ダイアログ>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      ファイル情報:"",
      ダイアログ表示: false、
      // クロッピングコンポーネントの基本設定オプション
      オプション: {
        : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
      picsList: [], // ページに表示される配列 // 重複した送信を防ぐ loading: false
    };
  },
  メソッド: {
    開く(ファイル) {
      this.fileinfo = ファイル;
      this.option.img = ファイル.url;
      this.dialogVisible = true;
    },
    blobToFile(Blob、ファイル) {
      const files = new window.File([theBlob], file.name, { type: theBlob.type });
      ファイルを返します。
    },
    //左回転 turnLeftOrRight(type) {
      if (type == "左") {
        this.$refs.cropper.rotateLeft();
      } それ以外 {
        this.$refs.cropper.rotateRight();
      }
    },
    // クリックして切り取ります。このステップは処理されたアドレスを取得することです。finish() {
      this.$refs.cropper.getCropBlob((データ) => {
        this.loading = true;
        const changeFile = this.blobToFile(data, this.fileinfo);
        const fileUrl = window.URL.createObjectURL(データ);
        // 切り取りが成功した後のコールバック。$emit("cutImgEnter", changeFile, fielUrl);
        this.loading = false;
        this.dialogVisible = false;
      });
    }
  }
};
</スクリプト>
<style lang="scss" スコープ>
// スクリーンショット.cropper-content {
  .クロッパー{
    幅: 自動;
    高さ: 300px;
  }
}
.btnボックス{
  ディスプレイ: フレックス;
  アイテムの位置を中央揃えにします。
  コンテンツの両端揃え: スペースの間;
}
</スタイル>

3. 効果

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • vue-cropper コンポーネントは画像の切り取りとアップロードを実現します
  • Vue+elementは画像のアップロードと切り抜き機能を実現します
  • Vue はモバイル画像の切り取りとアップロード機能を実装しました
  • Vueプロジェクトで画像切り抜き機能を実装する詳細な説明
  • Vueベースのモバイル画像切り抜きコンポーネント機能
  • Vue ベースの画像切り抜きとアップロード機能の Cropper js 実装コード
  • Vueは写真を切り取ってアップロードすることを実現
  • Vue のキャンバスで画像をトリミングする例
  • Vue 画像の切り取りとアップロードコンポーネントの実装
  • Vue 画像切り抜きコンポーネントのサンプルコード

<<:  IDEA の Docker プラグインを介して Springboot プロジェクトを公開する方法の詳細なチュートリアル

>>:  MySQLデッドロックの原因と解決策

推薦する

Linux は、ディレクトリが存在するかどうかを判断するために if を使用します。

Linux で if を使用してディレクトリが存在するかどうかを判断する方法方法は次のとおりです。...

Nodejs のグローバル変数とグローバルオブジェクトの知識ポイントと使用方法の詳細

1. グローバルオブジェクトすべてのモジュールは呼び出すことができます1) global: ブラウザ...

初心者がHTMLタグを学ぶ(1)

初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...

Docker の Windows ストレージ パス設定操作

Windows 10 に Docker をインストールする場合、コンテナタイプを Linux コンテ...

MySQL 文字列連結と null 値の設定のためのインスタンス メソッド

#文字列連結 concat(s1,s2); テーブル内の last_name と first_nam...

JavaScriptカルーセルの実装について

今日もとても実践的な事例です。名前を聞くだけで高度で難しそうですよね?今日はカルーセル画像の真髄を簡...

Vue が DingTalk の出勤カレンダーを実装

この記事では、DingTalkの勤怠カレンダーを実装するためのVueの具体的なコードを参考までに共有...

Dockerコンテナを使用する簡単な例

目次1. イメージをプルする2. イメージを実行する3. コンテナ内でアプリケーションをテストする4...

MySql インデックスはクエリ速度を向上させる一般的な方法のコード例

インデックスを使用してクエリを高速化する1. はじめにWeb 開発には、ビジネス テンプレート、ビジ...

仮想マシンのディスクサイズを拡張する方法

Vmvare が仮想マシンのディスク サイズを設定した後、ディスク領域が不足していることがわかりまし...

MySQL テーブルタイプ ストレージエンジンの選択

目次1. 現在のデータベース支出のストレージエンジンを表示する方法1:方法2: 2. ENGINE=...

CentOS 6 ZLMediaKit のコンパイルとインストール分析

Centos6にZLMediaKitをインストールするZLMediaKit の作者は Ubuntu ...

MySQLサービスを開くおよび閉じる2つの方法

方法1: cmdコマンドを使用するまず、DOS ウィンドウを開き、スタート、実行、cmd と入力しま...

ドラッグ効果を実現するための js オブジェクト指向メソッド

この記事では、ドラッグアンドドロップをJSオブジェクト指向で実装するための具体的なコードを参考までに...

jsはショッピングカートの加算と減算、価格計算を実装します

この記事の例では、ショッピングカートの加算と減算、価格計算を実装するためのjsの具体的なコードを共有...