开发过程中经常需要和图片处理打交道,看了网上很多有关图片处理的方法,都是讲解得一知半解,没有比较全面的总结。下面,将简单总结一个我们通过vue去处理img标签过程中,图片加载时,与图片加载失败时的处理方法。

1.常见的一个图片的处理流程,当接收到图片时,若图片较大,或者网络较慢的情况,图片还未加载完成,此时需要显示一个正在加载中的图片提示用户图片正在加载中。当图片加载或读取完毕时我们才替换需要显示图片显示到标签上。主要用的是img标签中的onload方法进行处理,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <div id="box">
        <img :src="loadImgSrc" :onload="onLoadImg(testImgSrc)">
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
    el: '#box',
    data: {
        testImgSrc: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic2.zhimg.com%2F50%2Fv2-193cbb243dc14d3a016caaa54ba02837_hd.jpg&refer=http%3A%2F%2Fpic2.zhimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1625726941&t=178316371a5e946d6b424ceb789595d6", //最终要加载的图片
        loadImgSrc: "/themes/default/demo/public/assets/images/loadinggif.gif", //加载中要显示的图片
    },
    methods: {
        onLoadImg: function(imgSrc) { //加载完成时触发
            console.log("onload", imgSrc)
            return 'this.src='+'"'+imgSrc+'";this.οnlοad=null';
        },
    }
});

</script>

</html>

到此,我们完成了一个图片加载过程中,到加载完成时的一个处理流程。在图片未完全加载成功时显示loading提示图,当图片完全从服务器端down完成后替换显示。

2.上面我们处理了图片正常加载中的处理过程,接下来就是处理图片的异常情况。当我们从服务器中读取一张图片的时候,除了上述的情况外,还有另外一种就是图片链接丢失,或者本地网络过慢无法加载图片的情况。所以我们要在处理的情况中捕捉异常的情况,显示错误状态下的图片,提示用户图片加载失败。这里我们用到的是onerrror的方法,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <div id="box">
        <img :src="loadImgSrc" :onload="onLoadImg(testImgSrc)" :onerror="onErrorImg(errorImgSrc)">
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
    el: '#box',
    data: {
        errorImgSrc: "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1917562744,2542638399&fm=26&gp=0.jpg", //图片加载失败时的图片
        testImgSrc: "https://gimg2.baidu.com/image_search/", //要加载的图片,此处链接随便填用作演示图片加载失败的情况
        loadImgSrc: "/themes/default/demo/public/assets/images/loadinggif.gif", //加载中要显示的图片
    },
    methods: {
        onLoadImg: function(imgSrc) {
            console.log("onload", imgSrc)
            return 'this.src='+'"'+imgSrc+'";this.οnlοad=null';
        },
        onErrorImg: function(imgSrc){
            console.log("onload", imgSrc)
            return 'this.οnerrοr=null;this.src='+'"'+imgSrc+'";';
        },
    }
});

</script>

</html>

到此,图片常见的加载中,加载失败时的处理方法就基本实现了、

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐