微信camera拍照组件的使用(uniapp小程序)代码可直接复制看效果

这篇具有很好参考价值的文章主要介绍了微信camera拍照组件的使用(uniapp小程序)代码可直接复制看效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信camera官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/camera.html

  1. html

整体效果 样式可以自行定义的一个拍照组件 未找到摄像头是因为台式机电脑没有摄像头 真机测试可以使用

拍照小程序代码,vue项目,uniapp,小程序,javascript,vue.js,Powered by 金山文档
<view class="tackpic">
        <view class="font-title" v-if="!setData.src">
            <view>对准文档 拍照扫描</view>
        </view>
        <view class="yulan-box" v-if="setData.src">
            <image :src="setData.src" mode=""></image>
            <button class="successBtn" @click="submitForm">完成</button>
        </view>
        <camera device-position="back" flash="off" @error="cameraError"
            style="width: 100%;height: calc(100vh - 240rpx)"></camera>
        <view v-if="setData.src==''" class="pic-bot">
            <view class="left" @click="takealbum">
                <u-icon name="photo" size="50" color="#fff"></u-icon>
            </view>
            <view class="center" @click="takePhoto">
                <view class="takeout">
                    <view class="takein">

                    </view>
                </view>
            </view>
        </view>
    </view>

2)方法

cameraError方法进入拍照页面时会提醒授权相机。如果用户点击不同意授权就会打回上一页,当再进入这个页面时会提醒让用户开启授权

uploadImgFile为uni自带的上传图片aip

takealbum方法点击时调用uniapp的从相册选择图 ()sourceType: 为‘album’从相册获取,为‘camera’时直接拍照,什么都不填写时默认两种选择

methods: {
            cameraError() {
                wx.showModal({
                    title: '提示',
                    content: '请开启摄像头权限,否则无法拍照',
                    confirmText: '去开启',
                    success(res) {
                        if (res.confirm) {
                            wx.openSetting({
                                success(res) {
                                    if (res.authSetting["scope.camera"]) {
                                        // 重点是这里,再次允许授权后需要刷新一下页面,camera组件才会出来
                                        wx.redirectTo({
                                            url: '/pages_home/components/takePictures'
                                        })
                                    } else {
                                        wx.navigateBack({
                                            delta: 1
                                        })
                                    }
                             }
                            })
                        } else if (res.cancel) {
                            console.log('用户点击取消')
                            wx.navigateBack({
                                delta: 1
                         })
                        }
                    }
                })

            },
            //添加防抖--提交
            submitFormFn() {
                let that = this
                that.uploadImgFile(this.setData.src, that)
            },
            submitForm() {
                if (this.timeout) {
                    clearTimeout(this.timeout);
                }
                this.timeout = setTimeout(this.submitFormFn, 1000);
            },


            uploadImgFile(filePath, that) {
                uni.uploadFile({
                    url: `${process.uniEnv.baseUrl}/baseVinCode/getVinCodeByImg`,
                    filePath: filePath,
                    name: 'file',
                    formData: {
                        file: filePath
                    },
                    header: {
                        'Content-Type': 'multipart/form-data',
                    },
                    success: response => {
                        let res = JSON.parse(response.data.toString("utf8"));
                        const {
                            data,
                            code
                        } = res;
                        if (code == 200) {
                            uni.redirectTo({
                                url: `/pages_home/photoIdentification?imageSrc=${filePath}&vinCode=${data}`
                            });
                        } else {
                            uni.showToast({
                                title: res.msg,
                                duration: 3000
                            });
                        }
                    },

                    complete: () => {
                        uni.hideLoading()
                    }

                });
            },
            takePhoto() {
                const ctx = wx.createCameraContext()
                ctx.takePhoto({
                    quality: 'high',
                    success: (res) => {
                        console.log(res, '------42');
//res.tempImagePath获取点击拍照后的图片路径 然后赋值给image标签显示图片。点击拍照图片就会存入手机相册
                        this.setData.src = res.tempImagePath
                    }
                })
            },
            takePic() {

            },

            takealbum() {
                this.chooseImage('album')
            },
            chooseImage(sourceType) {
                const that = this
                uni.chooseImage({
                    count: 1,
                    sizeType: ['original', 'compressed'],
                    sourceType: [sourceType],
                    success: (res) => {
                        if (res.tempFiles[0]['size'] > 20 * 1024 * 1024) {
                            uni.showToast({
                                title: '图片大小不能超过20M',
                                icon: 'none',
                                duration: 3000
                            });
                            return;
                        }
                        uni.showLoading({
                            title: '上传中...'
                        })
                        if (res.tempFiles[0]['size'] < 5 * 1024 * 1024) {
                            that.uploadImgFile(res.tempFilePaths[0], that)
                        } else {
                            uni.compressImage({
                                src: res.tempFilePaths[0],
                                quality: 80,
                                success: res => {
                                    that.uploadImgFile(res.tempFilePath, that)
                                }
                            })
                        }

                    }
                });
            },
        }

3)css样式文章来源地址https://www.toymoban.com/news/detail-561925.html

.successBtn {
        background-color: #05c160;
        padding: 4rpx 30rpx;
        color: #fff;
        height: 80rpx;
        position: absolute;
        bottom: 50rpx;
        right: 50rpx;
        display: flex;
        justify-content: center;
        align-items: center;
        border-radius: 10rpx;
    }

    .yulan-box {
        position: relative;
        width: 100%;
        height: 100%;
    }

    image {

        width: 100%;
        height: 100vh;
    }

    .tackpic {
        width: 100%;
        height: 100vh;
        background-color: #242424;

        .font-title {
            position: fixed;
            top: 3%;
            background-color: transparent;
            width: 100%;
            height: 50rpx;
            color: #fff;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 999;

            view {

                padding: 20rpx 30rpx;
                border-radius: 10rpx;
                font-size: 12px;
                background-color: rgba(0, 0, 0, 0.3);
            }
        }

        .pic-bot.data-v-1c7472ae {
            width: 100%;
            height: 240rpx;
            background-color: #242424 !important;
            position: relative;
        }
    }

    .pic-bot {
        width: 100%;
        display: flex;

        .left {
            width: 30%;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .center {

            width: 40%;
            padding: 20rpx;
            display: flex;
            align-items: center;
            justify-content: center;

            .takeout {
                width: 120rpx;
                height: 120rpx;
                border-radius: 50%;
                background-color: transparent;
                border: 3px solid #fff;
                display: flex;
                align-items: center;
                justify-content: center;
                position: absolute;
                bottom: 120%;

                .takein {
                    width: 80rpx;
                    height: 80rpx;
                    border-radius: 40rpx;
                    background-color: #fff;
                }
            }
        }

        .right {
            width: 30%;
        }
    }

到了这里,关于微信camera拍照组件的使用(uniapp小程序)代码可直接复制看效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序--下拉选择框组件封装,可CV直接使用

            接到的项目需求,查看ui设计图后,由于微信小程序官方设计的下拉选择框不符合需求,而且常用的第三方库也没有封装类似的,所以选择自己自定义组件。在此记录一下,方便日后复用。         ui设计图如下:                   微信官方提供的选择框         对比发现

    2024年02月05日
    浏览(44)
  • 微信小程序TS项目使用mobx(页面直接使用store和自定义组件中使用store)

     注意:下载完成后,需要删除 miniprogram_npm 目录后,重新构建 npm。 注意:ts编写的话,方法中使用this,需要在参数中定义this: any,否则会提示错误 引入onLoad()方法中引入createStoreBindings将store上的方法和属性绑定到页面中 在unOnLoad()方法中销毁destroyStoreBindings() 页面中使用:

    2024年02月16日
    浏览(46)
  • uniapp,微信小程序确认收货组件的使用

     这里很容易误会成,执行success函数,就收货成功了。其实要根据返回的参数来判断是否真的收货成功。 微信文档上也有说明:  

    2024年02月08日
    浏览(44)
  • 微信小程序复杂对象的双向绑定(附代码可直接使用)

    最近在小程序的开发过程中,遇到一个需求,需要绑定一个list到自定义表单组件,组件根据列表渲染表单,表单的值需要和父组件双向绑定。 但是这里却出现了问题,本人先使用vue的方式将list直接做整体绑定。 结果在子组件内部使用setData对list的属性做出变更时直接报错栈

    2024年02月09日
    浏览(61)
  • uniapp使用微信小程序提供的原生插件(组件)

    小程序交易保障标展示组件 为例 参考uniapp加载插件、微信小程序加载插件 1. manifest.json: 先打开manifest.json文件,然后我们找到\\\"mp-weixin\\\",引入需要使用的插件 2. pages.json 打开pages.json文件,然后再对应的页面配置处添加东西 3.页面使用

    2024年02月11日
    浏览(49)
  • 微信小程序 camera组件实现自定义界面的扫码功能

    目录 使用到的功能点: 代码实现: 效果图: 想要实现自定义界面的扫码,这里用到了微信小程序的媒体组件 ⚠️:同一页面只能插入一个  camera  组件 使用到的功能点: 1. camera mode=scanCode // 扫码模式 binderror  //用户不允许使用摄像头时触发 bindscancode // 在扫码识别成功时

    2024年02月09日
    浏览(39)
  • 【uniapp】使用canvas组件编译到微信小程序兼容出错问题

    使用uniapp编译跨平台项目会遇到不少兼容问题,这里主要讲canvas组件的,编译到微信小程序会有兼容出错问题,这里给讲一下解决方案,希望有帮助。 如果使用 CanvasContext 绘制,以下代码,编译到微信小程序上可能发现绘制不出来 看canvas组件的属性 type=\\\"2d\\\" 是否有加,要去掉

    2024年02月02日
    浏览(74)
  • Android 之 使用 Camera 拍照

    本节给大家带来的是Android中Camera的使用,简单点说就是拍照咯,无非两种: 1.调用系统自带相机拍照,然后获取拍照后的图片 2.要么自己写个拍照页面 本节我们来写两个简单的例子体验下上面的这两种情况~ 我们只需下面一席话语,即可调用系统相机,相机拍照后会返回一个

    2024年02月09日
    浏览(34)
  • uniapp - 实现日期选择器(年月日)组件,兼容 H5、App、小程序,提供组件源码可直接复制运行!

    该日期选择器组件无任何第三方依赖,源代码注释详细,高效简洁无 BUG。 本文详细讲解了在uniapp中,如何实现一个兼容h5、app、小程序的日期选择器组件, 你可以直接复制源码,然后再改改颜色什么的项目就能直接用了。 如下图所示,你将获取这样一个日期选择功能的组件

    2023年04月15日
    浏览(45)
  • uniapp 小程序富文本解析(直接复制代码可用)

    1.首先在 static 文件夹新建一个 richText.js 文件,代码如下: 2.在要用到的页面引入: 3.在要用到文本的地方粘贴,同时在data中声明一个  demoHtml: \\\"\\\",  变量 4.从接口拿到值后赋给demoHtml     

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包