Vue Cropper 這個套件使用起來非常方便,而且剛好符合我的需求,只需要看著文件設置一些設定就可以做出變化了。
前言
當主管告知需要在後台將前台的圖片做剪裁修改後,並且能夠即時預覽結果,最後再將圖片存成新檔案。找了一下有沒有前人造的輪子,發現還真的有,所以設置了一下後就可以達到我要的效果了。
Vue Cropper
- 安裝
npm install vue-cropper
yarn add vue-cropper
- 在 component 裡使用
import { VueCropper } from "vue-cropper";
components: {
VueCropper,
},
- data 跟 methods 的設定:
data() {
return {
modelSrc: "",
option: {
img: "https://fakeimg.pl/450x300/", // 圖片來源
outputType: "png", // 產生圖片的格式
autoCrop: true, // 是否要有截圖框
autoCropWidth: 350, // 截圖框寬
autoCropHeight: 220, //截圖框高
},
};
},
methods: {
// *********預覽目前截圖結果************
preview() {
this.$refs.cropper.getCropData((data) => {
// console.log(data);
this.modelSrc = data;
});
},
// *********即時預覽函數************
realTime(data) {
this.previews = data;
// console.log(data);
},
// *********得到截圖的 base64 數據************
demo() {
this.$refs.cropper.getCropData((data) => {
console.log(data);
});
},
},
- 最後在 component 的綁定
<vueCropper
ref="cropper"
:img="option.img"
:outputType="option.outputType"
:autoCrop="option.autoCrop"
:autoCropWidth="option.autoCropWidth"
:autoCropHeight="option.autoCropHeight"
@realTime="realTime"
>
</vueCropper>
這樣就會產生一個可以自由切割並且截圖的區塊,可以試著玩看看我建立的 CodeSandBox:
最後要記得給這個 component 一個高度,不然會顯示不出來。
資料來源:vue-cropper