最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過(guò)vue-cropper選取本地圖片自定義裁切圖片比例

 更新時(shí)間:2023年07月21日 11:33:47   作者:海的天空1661  
這篇文章主要介紹了Vue選取本地圖片,自定義裁切圖片比例?vue-cropper,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

裁切圖片,按照比例裁切,分步驟

1:el-upload選擇本地圖片(分選擇本地和上傳兩步驟)

2:在on-change回調(diào)方法中拿到el-upload選中的圖片,顯示在vueCropper上()。

2.1:在vueCropper顯示前,用el-dialog彈框顯示。

3:提交:拿到vueCropper的回調(diào)方法realTime中的裁切好的圖片,轉(zhuǎn)化為base64,再轉(zhuǎn)為file文件提交上傳給服務(wù)器。

看代碼步驟

一:el-upload

el-upload連接:Upload | Element Plus 

簡(jiǎn)單介紹,這個(gè)是一個(gè)選擇本地圖片上傳的功能,這“選擇本地圖片”“上傳服務(wù)器”兩個(gè)功能可以一起實(shí)現(xiàn),也可以分開(kāi)實(shí)現(xiàn),因我這里需要,是分開(kāi)實(shí)現(xiàn)。

這里選擇的是elementplus的選取上傳功能組件,當(dāng)然也可以自己去寫(xiě)。

 <el-upload 
    accept="image/jpeg, image/gif, image/png, image/jpg" 
    ref='upload'           
    :action="uploadAction"          //上傳方法,
    :auto-upload="false"            //是否自動(dòng)上傳文件。這里需要false
    :headers="uploadHeaders"     
    :limit="1" 
    :show-file-list="false"         //上傳顯示的列表
    :on-change="onChange"           //選擇文件或上傳文件成功或上傳文件失敗時(shí)的鉤子功能
    >
    <el-button type="default">選擇圖片</el-button>
 </el-upload>
// 選擇本地圖片
        onChange(file, fileList) {
            this.$nextTick(() => {
                this.option.img = URL.createObjectURL(file.raw);
                this.$refs.upload.clearFiles();
                this.dialogVisibleImgs = true; // 控制顯示彈框
            })
        },

二:拿到圖片,彈框顯示(這里分步驟)

從el-upload的onchange方法中拿到img。讓el-dialog彈框顯示vuecropper。并上傳

<el-dialog class="cropperDialog" 
        :close-on-click-modal="false" 
        title="圖片裁剪" 
        :visible.sync="dialogVisibleImgs"
        width="40%" 
        @close="close"
        >
            <div class="cropper-content" v-if="option.img">
                <div class="cropper" style="text-align: center;">
                    <vueCropper     
                        ref="cropper" 
                        :img="option.img" 
                        :output-size="option.size" 
                        :output-type="option.outputType"
                        :info="true" 
                        :full="option.full" 
                        :fixed="option.fixed" 
                        :fixed-number="option.fixedNumber"
                        :can-move="option.canMove" 
                        :can-move-box="option.canMoveBox" 
                        :fixed-box="option.fixedBox"
                        :original="option.original"      //上傳圖片按照原始比例渲染 原圖裁切大小的需寫(xiě)這個(gè)
                        :auto-crop="option.autoCrop" 
                        :auto-crop-width="option.autoCropWidth"  // 默認(rèn)生成裁圖框?qū)挾?原圖裁切大小的需寫(xiě)這個(gè)" 
                        :auto-crop-height="option.autoCropHeight"  //     默認(rèn)生成裁圖框高度 原圖裁切大小的需寫(xiě)這個(gè)
                        :center-box="option.centerBox" 
                        :high="option.high"
                        model="cover" 
                        :max-img-size="option.max" 
                        :info-true="option.infoTrue" 
                        @realTime="realTime"    //實(shí)時(shí)預(yù)覽函數(shù)
                        >
                    </vueCropper>
                </div>
            </div>
            <div class="dialogbottom" style="display: flex; align-items: center; justify-content: space-between;">
                <div class="preview">
                    <!-- 這里傳入封裝的裁切比例 -->
                    <div class="title">封面預(yù)覽 圖片比例({{ fixedNum[0] }}:{{fixedNum[1]}})</div>
                    <div class="preview_clumk">
                        <img :src="previewImageHeight" alt="" style="width:90px;"
                            object-fit="contain">
                    </div>
                </div>
                <div>
                    <el-button style="margin-left: 10px; margin-top: 20px; " type="success" :loading="loading"
                        @click="uploadEnd">上傳并保存</el-button>
                </div>
            </div>
        </el-dialog>
// // 實(shí)時(shí)預(yù)覽函數(shù)
        realTime(data) {
            // ①獲取截圖的 base64 數(shù)據(jù)
            this.$refs.cropper.getCropData((data) => {
                this.previewImageHeight = data;
            })
        },
        //將base64轉(zhuǎn)換為file文件流
        base64toFile(dataurl, filename = 'file') {
            let arr = dataurl.split(',')
            let mime = arr[0].match(/:(.*?);/)[1]
            let suffix = mime.split('/')[1]
            let bstr = atob(arr[1])
            let n = bstr.length
            let u8arr = new Uint8Array(n)
            while (n--) {
                u8arr[n] = bstr.charCodeAt(n)
            }
            return new File([u8arr], `${filename}.${suffix}`, {
                type: mime,
            })
        },
        // 自定義上傳給后臺(tái),這里能最大限度自定義
        uploadEnd() {
            if (!this.option.img && this.option.img == '')
                return this.ME('請(qǐng)先選擇圖片')
            this.loading = true;
            if (this.previewImageHeight !== '') {
                const optionImg = this.base64toFile(this.previewImageHeight);
                const formData = new FormData()
                formData.append('file', optionImg);
                this.$api.Media.Image.Upload(formData).then((res) => {
                    this.loading = false;
                    this.imageUrl = res.data.url;
                    this.$message.success('上傳成功');
                    this.$emit("input", this.imageUrl);
                    this.close();
                }).catch(() => {
                    this.loading = false;
                })
            }
        }

到此這篇關(guān)于Vue選取本地圖片,自定義裁切圖片比例 vue-cropper的文章就介紹到這了,更多相關(guān)vue自定義裁切圖片比例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決vue addRoutes不生效問(wèn)題

    解決vue addRoutes不生效問(wèn)題

    這篇文章主要介紹了解決vue addRoutes不生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Vue3解決找不到模塊@/components/xxx.vue或其相應(yīng)的類(lèi)型聲明ts文件(2307)問(wèn)題

    Vue3解決找不到模塊@/components/xxx.vue或其相應(yīng)的類(lèi)型聲明ts文件(2307)問(wèn)題

    這篇文章主要介紹了Vue3解決找不到模塊@/components/xxx.vue或其相應(yīng)的類(lèi)型聲明ts文件(2307)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • vue elementui 動(dòng)態(tài)追加下拉框、輸入框功能

    vue elementui 動(dòng)態(tài)追加下拉框、輸入框功能

    這篇文章主要介紹了vue elementui 動(dòng)態(tài)追加下拉框、輸入框功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-04-04
  • vue可滑動(dòng)的tab組件使用詳解

    vue可滑動(dòng)的tab組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue可滑動(dòng)的tab組件使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue組件中使用防抖函數(shù)的方式

    vue組件中使用防抖函數(shù)的方式

    這篇文章主要介紹了vue組件中使用防抖函數(shù)的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • electron+vite+vue3 快速入門(mén)實(shí)例教程

    electron+vite+vue3 快速入門(mén)實(shí)例教程

    Electron、Vite 和 Vue 3 結(jié)合使用可以創(chuàng)建強(qiáng)大的跨平臺(tái)桌面應(yīng)用程序,下面是一個(gè)快速入門(mén)教程,幫助你搭建一個(gè)基于 Electron + Vite + Vue 3 的項(xiàng)目,感興趣的朋友一起看看吧
    2025-05-05
  • 解決vue3+vite配置unplugin-vue-component找不到Vant組件

    解決vue3+vite配置unplugin-vue-component找不到Vant組件

    這篇文章主要為大家介紹了vue3+vite配置unplugin-vue-component找不到Vant組件問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Vue之表單事件數(shù)據(jù)綁定詳解

    Vue之表單事件數(shù)據(jù)綁定詳解

    這篇文章主要為大家介紹了Vue之表單事件的數(shù)據(jù)綁定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助,希望能夠給你帶來(lái)幫助
    2021-11-11
  • vue項(xiàng)目打包之開(kāi)發(fā)環(huán)境和部署環(huán)境的實(shí)現(xiàn)

    vue項(xiàng)目打包之開(kāi)發(fā)環(huán)境和部署環(huán)境的實(shí)現(xiàn)

    這篇文章主要介紹了vue項(xiàng)目打包之開(kāi)發(fā)環(huán)境和部署環(huán)境的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue3實(shí)現(xiàn)密碼加密登錄的示例代碼

    Vue3實(shí)現(xiàn)密碼加密登錄的示例代碼

    現(xiàn)在,很多登陸表單都會(huì)使用密碼加密,為登錄安全,登錄表單輸入密碼,會(huì)加密后傳入后臺(tái),本文就來(lái)介紹一下Vue3實(shí)現(xiàn)密碼加密登錄的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02

最新評(píng)論

灵山县| 柘荣县| 木里| 清丰县| 淮南市| 盘山县| 安化县| 宣化县| 工布江达县| 凤阳县| 芦溪县| 武汉市| 大理市| 鄯善县| 双柏县| 南通市| 乌鲁木齐县| 崇州市| 东台市| 绵阳市| 临城县| 兴国县| 行唐县| 南平市| 宜良县| 通化县| 九江县| 西充县| 江川县| 吐鲁番市| 郯城县| 安岳县| 玛沁县| 广灵县| 乌拉特前旗| 吐鲁番市| 通河县| 湘阴县| 慈利县| 汝南县| 景德镇市|