検索
ホームページウェブフロントエンドVue.jsvue-cropper を使用して vue プロジェクト内の画像をトリミングする

vueプロジェクト内の画像をトリミングするにはどうすればよいですか?次の記事ではvue-cropperを使って画像をトリミングする方法を紹介しますので、ご参考になれば幸いです。

vue-cropper を使用して vue プロジェクト内の画像をトリミングする

プロジェクトのニーズにより、画像のトリミングが必要です。前回のプロジェクトは Cropper.js で実装していましたが、今回は vue を使用するため vue-cropper コンポーネントを使用します。使い方は非常に簡単ですが、落とし穴もたくさんあります。 (学習ビデオ共有: vue ビデオ チュートリアル )

1. インストール

npm install vue-cropper

main.js

import VueCropper from 'vue-cropper'
Vue.use(VueCropper)

2. 画像のトリミング

vue-cropper を使用して vue プロジェクト内の画像をトリミングする

1. VueCropper コンポーネントを導入し、関連するプロパティを設定します。

<div  style="display: flex;justify-content: center;align-items: center;width: 100%;height: 100%;">
            <vueCropper
              @mouseenter.native="enter"
              @mouseleave.native="leave"
              ref="cropper"
              :img="uploadImg"
              :outputSize="option.size"
              :outputType="option.outputType"
              :info="true"
              :full="option.full"
              :canMove="option.canMove"
              :canMoveBox="option.canMoveBox"
              :original="option.original"
              :autoCrop="option.autoCrop"
              :fixed="option.fixed"
              :fixedNumber="option.fixedNumber"
              :centerBox="option.centerBox"
              :infoTrue="option.infoTrue"
              :fixedBox="option.fixedBox"
              style="background-image:none"
            ></vueCropper>
</div>
option: {
       info: true, // 裁剪框的大小信息
       outputSize: 0.8, // 裁剪生成图片的质量
       outputType: "jpeg", // 裁剪生成图片的格式
       canScale: false, // 图片是否允许滚轮缩放
       autoCrop: false, // 是否默认生成截图框
       fixedBox: false, // 固定截图框大小 不允许改变
       fixed: false, // 是否开启截图框宽高固定比例
       fixedNumber: [7, 5], // 截图框的宽高比例
       full: true, // 是否输出原图比例的截图
       canMove: false, //时候可以移动原图
       canMoveBox: true, // 截图框能否拖动
       original: false, // 上传图片按照原始比例渲染
       centerBox: false, // 截图框是否被限制在图片里面
       infoTrue: true // true 为展示真实输出图片宽高 false 展示看到的截图框宽高
     }

❗️デフォルトのトリミング画像の背景には醜いモザイクがかかっています。実際には、モザイク画像が背景として使用されています。これを削除するには、VueCropper で背景画像を削除するスタイルを設定するだけです style ="background-image:none".

2. アップロードが完了したら、マウスで VueCropper に入り、トリミングを開始します

VueCroper@ に設定します。 Mouseenter.native="enter "Event (⭐️ コンポーネントでネイティブ イベントを使用するには、ネイティブ キーワード )

enter() {
 if (this.uploadImg == "") {
   return;
 }
 this.$refs.cropper.startCrop(); //开始裁剪
},

3 を追加する必要があります。トリミングを停止して取得するには、VueCropper をそのままにしておきます。切り取られた写真。

VueCroper に設定します@mouseleave.native="leave"Event

leave() {
   this.$refs.cropper.stopCrop();//停止裁剪
   this.$refs.cropper.getCropData(data => { //获取截图的base64格式数据
     this.cutImg = data;
   });
   // this.$refs.cropper.getCropBlob(data => { //获取截图的Blob格式数据
   //   this.cutImg = data;
   // });
 },

p を離れるときに切り抜きます。切り抜きボタンをクリックした後、トリミングボタンをクリックしてトリミングしても、得られる写真はトリミングされないので、トリミングするためにトリミングボタンをクリックする必要はありませんが、理由がわからないので、この方法を思いつきました。
vue-cropper 画像のトリミングの問題

3. スクリーンショット フレームを元の画像にエコーする

vue-cropper を使用して vue プロジェクト内の画像をトリミングする
基本原則:

this.$refs.cropper.getCropAxis() //获取截图框基于容器的坐标点 {x1: 174, x2: 131, y1: 86, y2: 58}
this.$refs.cropper.cropW  //截图框宽
this.$refs.cropper.cropH //截图框高

上記のメソッドを使用して、スクリーンショット フレームの幅、高さ、コンテナベースの座標点を取得し、VueCropper の自動キャプチャ フレームを表示させ、自動キャプチャ フレームのサイズと位置を設定します。

名前フィールドを例に挙げます:

{
          id: 1,
          name: "姓名",
          cropInfo: {
            width: 108, //this.$refs.cropper.cropW
            height: 56, //this.$refs.cropper.cropH 
            offsetX: 174, //this.$refs.cropper.getCropAxis().x1
            offsetY: 86  //this.$refs.cropper.getCropAxis().y1
}

1.「名前」el-card に Enter イベントを設定します <el-card></el-card>

enterCard(refWord) {
      this.$refs.cropper.goAutoCrop();//重新生成自动裁剪框
      this.$nextTick(() => {
        // if cropped and has position message, update crop box
        //设置自动裁剪框的宽高和位置
        this.$refs.cropper.cropOffsertX = refWord.cropInfo.offsetX;
        this.$refs.cropper.cropOffsertY = refWord.cropInfo.offsetY;
        this.$refs.cropper.cropW = refWord.cropInfo.width;
        this.$refs.cropper.cropH = refWord.cropInfo.height;
      });
    }

2. el-card<el-tabs el-tabs leave leavecard></el-tabs>

leaveCard() {
      this.$refs.cropper.clearCrop(); //取消裁剪框
    }

❗️el カードに Leave イベントを設定しないように注意してください。そうしないと、マウスを次の el カードに移動すると、トリミング ボックスが表示されます。がキャンセルされて再生成されるため、ページがちらつく現象が発生します。

4. その他

  • スクリーンショットのフレームを画像に制限します: https://github.com/xyxiao001/vue-cropper/issues /429
    解決策: centerBox は true に設定されており、autoCrop=true の場合にのみ有効になります

  • プロジェクトはクロップ ボックスの位置情報とサイズを送信する必要があります。背景をトリミングするか OCR を実行しますが、背景に渡された後のトリミングされた画像は常に右下隅にオフセットされます: https://github.com/xyxiao001/vue-cropper/issues/386
    解決策: 画像は拡大縮小されます。はい、位置を渡すときは、position*scale.

  • を使用する必要があります。ほとんどの画像のトリミングには問題ありませんが、トリミング時に常にずれが発生します。いくつかの写真: https://github.com /xyxiao001/vue-cropper/issues/439
    解決策: デフォルトのトリミングされた画像サイズには制限があることが判明しました。最大の幅と高さは 2000 ピクセルです。この値を 10000 に設定してください

vue-cropper を使用して vue プロジェクト内の画像をトリミングする

[推奨関連ビデオ チュートリアル: vuejs エントリ チュートリアルWeb フロントエンドエントリ###]###

以上がvue-cropper を使用して vue プロジェクト内の画像をトリミングするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcsdnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Vue.jsとReactの未来:傾向と予測Vue.jsとReactの未来:傾向と予測May 09, 2025 am 12:12 AM

Vue.jsとReactの将来の傾向と予測は次のとおりです。1)Vue.jsはエンタープライズレベルのアプリケーションで広く使用され、サーバー側のレンダリングおよび静的サイト生成でブレークスルーを行いました。 2)Reactは、サーバーコンポーネントとデータ収集で革新され、並行性モデルをさらに最適化します。

Netflixのフロントエンド:テクノロジースタックに深く潜りますNetflixのフロントエンド:テクノロジースタックに深く潜りますMay 08, 2025 am 12:11 AM

Netflixのフロントエンドテクノロジースタックは、主にReactとReduxに基づいています。 1.反応は、高性能のシングルページアプリケーションを構築するために使用され、コンポーネント開発を通じてコードの再利用性とメンテナンスを改善します。 2。国家管理には、状態の変更が予測可能で追跡可能であることを確認するために、国家管理に使用されます。 3.ツールチェーンには、コードの品質とパフォーマンスを確保するために、Webpack、Babel、Jest、および酵素が含まれています。 4.パフォーマンスの最適化は、ユーザーエクスペリエンスを向上させるためのコードセグメンテーション、怠zyな読み込み、サーバー側のレンダリングを通じて達成されます。

Vue.jsおよびFrontend:インタラクティブなユーザーインターフェイスの構築Vue.jsおよびFrontend:インタラクティブなユーザーインターフェイスの構築May 06, 2025 am 12:02 AM

Vue.jsは、非常にインタラクティブなユーザーインターフェイスを構築するのに適したプログレッシブフレームワークです。そのコア機能には、レスポンシブシステム、コンポーネント開発、ルーティング管理が含まれます。 1)レスポンシブシステムは、Object.DefinePropertyまたはプロキシを介したデータ監視を実現し、インターフェイスを自動的に更新します。 2)コンポーネント開発により、インターフェイスを再利用可能なモジュールに分割できます。 3)Vuerouterは、ユーザーエクスペリエンスを向上させるための単一ページアプリケーションをサポートしています。

Vuejsの欠点は何ですか?Vuejsの欠点は何ですか?May 05, 2025 am 12:06 AM

vue.jsの主な欠点には次のものが含まれます。1。エコシステムは比較的新しいものであり、サードパーティのライブラリとツールは他のフレームワークほど豊富ではありません。 2。複雑な関数では、学習曲線が急になります。 3.コミュニティのサポートとリソースは、反応や角度ほど広範ではありません。 4.パフォーマンスの問題は、大規模なアプリケーションで発生する可能性があります。 5。バージョンのアップグレードと互換性の課題が大きくなります。

Netflix:フロントエンドフレームワークを発表しますNetflix:フロントエンドフレームワークを発表しますMay 04, 2025 am 12:16 AM

Netflixは、Reactをフロントエンドフレームワークとして使用します。 1.反応のコンポーネント開発と仮想DOMメカニズムは、パフォーマンスと開発効率を向上させます。 2。WebpackとBabelを使用して、コードの構築と展開を最適化します。 3.パフォーマンスの最適化のために、コードセグメンテーション、サーバー側のレンダリング、キャッシュ戦略を使用します。

Vue.jsによるフロントエンド開発:利点とテクニックVue.jsによるフロントエンド開発:利点とテクニックMay 03, 2025 am 12:02 AM

Vue.jsの人気の理由には、シンプルさと簡単な学習、柔軟性、高性能が含まれます。 1)そのプログレッシブフレームワークの設計は、初心者が段階的に学ぶのに適しています。 2)コンポーネントベースの開発により、コードの保守性とチームコラボレーション効率が向上します。 3)レスポンシブシステムと仮想DOMは、レンダリングパフォーマンスを改善します。

Vue.js vs. React:使いやすさと学習曲線Vue.js vs. React:使いやすさと学習曲線May 02, 2025 am 12:13 AM

Vue.jsは使いやすく、スムーズな学習曲線があり、初心者に適しています。 Reactは急な学習曲線を持っていますが、柔軟性が強いため、経験豊富な開発者に適しています。 1.Vue.jsは、単純なデータバインディングとプログレッシブデザインを介して簡単に始められます。 2.反応には、仮想DOMとJSXを理解する必要がありますが、より高い柔軟性とパフォーマンスの利点を提供します。

Vue.js vs. React:どのフレームワークがあなたに適していますか?Vue.js vs. React:どのフレームワークがあなたに適していますか?May 01, 2025 am 12:21 AM

Vue.JSは、高速開発や小規模プロジェクトに適していますが、Reactは大規模で複雑なプロジェクトにより適しています。 1.Vue.jsは簡単で学習しやすく、迅速な開発や小規模プロジェクトに適しています。 2.反応は強力で、大規模で複雑なプロジェクトに適しています。 3. Vue.jsの進歩的な特徴は、徐々に機能を導入するのに適しています。 4。複雑なUIおよびデータ集約型アプリケーションを扱うとき、Reactのコンポーネントと仮想DOMはうまく機能します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境