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デッドロックの原因と解決策

推薦する

3列レイアウトを実現するCSS3フレキシブルボックスフレックス

タイトルの通り、高さは既知で、左と右の列の幅は 300 ピクセル、中央は適応型です。弾性ボックス自体...

Linux ps および pstree コマンドの知識ポイントのまとめ

Linux の ps コマンドは Process Status の略です。 ps コマンドは、システ...

CSS3で線形グラデーションを実装するためのコードの詳細な説明

序文デモでは古いバージョンのブラウザのグラデーションが実装されています[IE9-]。 IE9 より前...

JavaScript の Set データ構造の詳細な説明

目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...

{{ }} で関数を直接使用する WeChat アプレットの例

序文WeChat アプレット開発 (ネイティブ wxml、wxcss) で、{{ }} 内で直接メソ...

Oracle10パーティションとMySQLパーティションの違いの詳細な説明

一般的に使用される Oracle10g パーティションは、範囲 (範囲パーティション)、リスト (リ...

Docker による Oracle 11g イメージ構成のプルに関する詳細なチュートリアル

さっそくAlibaba の oracle11g イメージをプルして構成する docker の記録を開...

JavaScriptクロージャの原理と機能の詳細な説明

目次導入クロージャの使用カレー作りパブリック変数の実装キャッシュカプセル化(属性のプライベート化)閉...

Vueの監視方法のケースの詳細な説明

Vueでの監視方法時計知らせ名前: 監視する属性に同じ名前を付ける必要があります。 1. 機能Vue...

VueでEchartsチャートの幅と高さの適応を実現する実践

目次1. インストールとインポート2. 手ぶれ補正機能を定義する3. チャートコードを描くinit ...

DockerでGPUを使用するプロセスの詳細な説明

目次tf-gpu をダウンロード取得したtf-gpuイメージに基づいて独自のイメージを構築するイメー...

Vueナンバープレート検索コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...

MySQL での SQL モードの表示と設定の詳細な説明

MySQL での SQL モードの表示と設定MySQL はさまざまなモードで実行でき、さまざまなシナ...

Vue で eslint 検出をオフにする方法 (複数の方法)

目次1. 問題の説明2. 問題解決1. 問題の説明Vue プロジェクトを開発する場合、作成時に誤って...