用 wx.chooseMedia 做照相和摄像(附预览图片扩展)

微信小程序(vue3) - 详细实现图片压缩上传服务器示例代码,wx.chooseMedia手机拍照或相册选取后将图片进行压缩处理,手机摄像头拍照后图像太大需要先降低图像大小后再上传(不牺牲画质减小) 微信小程序,vue3,微信小程序图片压缩,如何实现图片的压缩,压缩到指定大小,降低图片大小但不影响画面,图片文件上传,超过多少M压缩上传,指定一个压缩大小范围,手机拍照或者本地图片太大上传之前先压缩,微信小程序上传图片并等比列压缩到指定大小,微信小程序实现本地图片压缩,小程序图片上传压缩,ts,v3语法,微信小程序开发图片压缩解决办法,微信小程序上传图片使用compressImage压缩,wx.chooseMedia,拍照上传图片太大如何压缩,用户从相册选中怎么先压缩,不损伤图片还能降低大小,微信小程序做图 阅读详情

一、先看结论

需求

做法

从相册选图 / 拍照

wx.chooseMedia({ mediaType:['image'], sourceType:['album','camera'] })

从相册选视频 / 录像

wx.chooseMedia({ mediaType:['video'], maxDuration:60 })

拿到文件后显示

res.tempFiles[0].tempFilePath → setData → image/video 的 src

作业扩展:预览图片

按钮 disabled="{{!imagePath}}" + wx.previewImage

关键点:sourceType 里同时写 album 和 camera,点击按钮时微信才会从底部弹出"拍摄 / 从相册选择 / 取消"。只写一个,就直接进对应入口。


二、界面结构

一个 scroll-view 包一个 .box,里面五个组件,顺序是:标题 → 获取图片按钮 → 预览图片按钮(作业新增)→ image → 获取视频按钮 → video。


<scroll-view class="scrollarea" scroll-y type="list">

<view class="box">

<view class="title">照相和摄像</view>

<button type="primary" bind:tap="chooseImage">获取图片</button>

<button type="primary" bind:tap="previewImage" disabled="{{!imagePath}}">预览图片</button>

<image src="{{imagePath}}" mode="widthFix" />

<button type="primary" bind:tap="chooseVideo">获取视频</button>

<video src="{{videoPath}}" />

</view>

</scroll-view>

disabled="{{!imagePath}}" 是这次作业的全部精髓:imagePath 初始为空字符串,!'' 为 true,按钮置灰;选图成功后 imagePath 变成路径,!路径 为 false,按钮恢复可点。一行代码,不用再写 if 判断去手动改按钮状态。


三、逻辑层

两个函数调的是同一个 API,只是参数不同:


// 获取图片

chooseImage() {

wx.chooseMedia({

count: 9,

mediaType: ['image'],

sourceType: ['album', 'camera'],

success: res => {

this.setData({ imagePath: res.tempFiles[0].tempFilePath });

},

fail: err => console.log('获取图片失败' + err)

});

},

// 获取视频

chooseVideo() {

wx.chooseMedia({

mediaType: ['video'],

sourceType: ['album', 'camera'],

maxDuration: 60, // 3~60 秒,只对 camera 生效

camera: ['back', 'front'], // 只用 sourceType 含 camera 时才起作用

success: res => {

this.setData({ videoPath: res.tempFiles[0].tempFilePath });

},

fail: err => console.log('获取视频失败' + err)

});

}

预览功能:


previewImage() {

if (!this.data.imagePath) return;

wx.previewImage({

current: this.data.imagePath,

urls: [this.data.imagePath]

});

}

current 是打开预览时默认显示的那张,urls 是数组。只有一张图时写 urls: [路径] 就行;如果 chooseMedia 时 count 取了 9 张,就把整个 tempFiles 的路径拼成数组传进去,可以左右滑动切换。


四、样式上的小坑

image 组件在没图的时候默认是一片空白(或者显示一个破图占位)。课本里的做法是给 image 上底色:


image {

background-color: powderblue;

border: 2rpx solid black;

height: 400rpx;

width: 100%;

}

这样初始状态就是一块浅蓝的占位区域,和 video 组件的黑底在视觉上对称,界面不会"塌"下去。

另外 page { height: 100vh; display: flex; flex-direction: column; } 配 .scrollarea { flex: 1 },是为了让内容超出屏幕时能在 scroll-view 内部滚动,而不是整页拖动。


五、真机测试的注意事项

  1. 模拟器测不了"拍摄"。 开发者工具的模拟器没有真实相机,点"拍摄"只会提示不支持,必须用"预览"或"真机调试"扫码在手机上看。
  1. 首次调用会申请权限。 用户点拒绝,走的是 fail 回调,不会报错弹窗,所以要自己 console.log 或者给个 wx.showToast。
  1. 临时路径会失效。 tempFilePath 只在当前小程序生命周期内有效,重启后就没了。要留着得 wx.saveFile 存到本地,或者上传到自己的服务器。
  1. 导航栏。 课本截图用的是课程自带的 <navigation-bar> 组件(因为 app.json 里写了 "navigationStyle": "custom")。自己练手时不必跟着搞,直接用原生导航栏,在 window 里配 navigationBarTitleText 就行,效果一样,还少一个组件。

六、小结

这个案例本身不难,价值在于把"选媒体资源"这件事串起来了:一个 API、两种类型、两种来源、一个临时路径。真正要理解的只有两件事——sourceType 决定弹不弹选择器,tempFilePath 决定拿到的能不能直接用。

HBuilderx 坑 之前没问题 改了几行代码 小程序上传报分包大小超过限制 Error: 分包大小超过限制,main package source size 4199KB exceed max limit 2MB [20221213 10:08:06][wx432abdb518bdc1eb]下面的我提示是都没超过2M,却提示我超过限制,代码改了不到20行吧,之前是正常上传的.....,比如这类,要压缩的,前提是没压缩过的,但是我肯定提交的时候是压缩的,没勾选此项的要注意,如果本文解决了你的困扰 来波666不为过吧! 阅读详情

相关推荐

Android keymint(keymaster)一RKP

Android RKP

weixin_47139576的博客 1万+

微信小程序实战:使用 wx.chooseMedia 实现照相与摄像功能

展开,设计一个小程序,演示该接口的功能和使用方法。小程序运行后,既可以从相册获取图片或视频,也可以直接拍摄图片和视频。选择图片后,图片会显示在 image 组件中;选择视频后,点击视频即可播放。在微信小程序开发中,调用手机相机和相册是常见的功能需求。等接口进一步丰富功能,建议读者动手完成扩展练习,加深对媒体相关 API 的理解。为了让界面更美观,需要为容器和媒体组件设置合适的样式。接口在照相和摄像场景中的使用方法。,填写好项目名称和 AppID 后即可创建。本案例通过一个完整的小程序示例,演示了。

zy2178518261的博客 146

VS2022+Qt6保姆级环境配置指南:从插件安装到项目互通全流程

本文提供VS2022与Qt6深度整合的全流程指南,涵盖环境配置、插件安装、项目互通等关键步骤。详细解析编译器版本匹配、跨IDE协作方案及效能优化技巧,帮助开发者高效搭建C++界面设计开发环境,实现软件项目无缝互通。

zero1的博客 733

微信小程序实战:照相与摄像(wx.chooseMedia 实现图片选择 + 图片预览 + 视频拍摄)

本案例基于微信小程序API,实现拍照/相册选图、拍摄/选视频功能,并支持图片预览与视频播放。通过wx.chooseMedia统一获取媒体文件,结合setData动态渲染image/video组件,利用disabled="{{!imagePath}}"实现预览按钮状态控制。使用wx.previewImage实现全屏图片预览。强调真机调试重要性,因模拟器对视频路径兼容性差,易出现黑屏问题。项目涵盖核心API应用、数据绑定、交互优化及常见坑点解决,是媒体处理实战范例。

ANGEL9970的博客 161

madgwick算法基于MPU9250姿态融合漂移问题的原因

基于MPU9250的madgwick算法姿态漂移问题原因 0、声明 因为这个是现象是不是共性目前本人还没研究过,只是在个体问题研究的基础上得出的结论,或许我买到的MPU9250是一个盗版:),所以只具备参考性。 1、现象 使用MPU9250的加速度计、角速度计、磁力计(AK8963)原始数据输入到madgwick算法中,得到的姿态最终会在停止姿态变化后仍然漂移一小段时间。其中加速度计和角速度计读取速率为400hz,磁力计为100hz,加速度计采样范围±2g,角速度计采样范...

GreedyZombie的博客 3872

配置 Druid 数据源及密码加密-SpringBoot 实战基础

在SpringBoot中配置 Druid 数据源及密码加密的方法前文集成 MyBatis Plus,实现了一组增删改查接口。在启动服务时,从控制台中可以看出 Spring Boot 默认使用 Hikari 作为数据库连接池,Hikari性能很优秀。在国内使用较多的连接池还属阿里开源的 Druid,中文发音为德鲁伊。Druid 结合了 C3P0、DBCP 等 DB 池的优点,同时还加入了日志监控,可以很好的监控 DB 池连接和 SQL 的执行情况。...

m0_67698950的博客 954

照相和摄像实验报告

本案例学习小程序媒体 API,掌握从相册选取、相机拍摄图片和视频,在页面渲染媒体资源。作业扩展掌握实现全屏预览,学会利用disabled实现按钮状态控制,根据有无数据动态切换按钮是否可用。理解临时媒体文件的生命周期,区分模拟器与真机能力差异。

2601_96878920的博客 195

RAG在医药行业为什么80%都翻车了?

这篇文章不是要劝你别做RAG,而是把坑说清楚。医药行业有它的特殊性——监管压力、专业术语密度、多语言混排、文档结构复杂——这些因素叠加在一起,让标准RAG教程里的那套方法论几乎直接失效

qq_31808385的博客 635

微信小程序:照相和摄像

看了就会

WYBY12的博客 143

手把手教你用RC桥式振荡器生成1Hz-1MHz正弦波(附完整电路图)

本文详细介绍了如何从零构建RC桥式振荡器,实现1Hz-1MHz正弦波的生成。通过核心元件选型、参数设计、电路搭建与优化等步骤,帮助读者掌握振荡器的工作原理和实战技巧。特别适合电子实验和信号处理领域的初学者和工程师,附完整电路图和常见问题解决方案。

weixin_30338481的博客 467

Win10更新后黑屏只剩鼠标?火绒误杀explorer.exe的5种自救方案(附详细步骤)

本文详细介绍了Win10更新后出现黑屏只剩鼠标的5种专业修复方案,重点解决火绒误杀explorer.exe的问题。从基础的任务管理器操作到安全模式下的系统修复,再到注册表编辑和系统还原,提供了全面的解决方案,帮助用户快速恢复系统正常运行。

weixin_29306571的博客 637

# 微信小程序实践:wx.chooseMedia 实现照相摄像与图片预览

本文基于微信小程序实战案例,详解wx.chooseMedia接口实现拍照、摄像及相册选取功能,结合image与video组件动态渲染媒体资源。通过数据绑定与disabled状态控制,实现图片预览按钮的动态启用,并利用wx.previewImage完成全屏大图预览。文章涵盖权限配置、临时路径处理、交互逻辑设计等关键点,总结了开发中常见坑点,为小程序媒体文件操作提供完整实践参考。

Clease的博客 68

从Overleaf上导出Latex论文发布到arxiv详细教程(常见问题与解决)

如果是做cv的论文请选择“Computer Vision and Pattern Recognition”,选择“Artificial Intelligence”可能会被on hold,貌似这个指的是传统的人工智能?我用公司邮箱注册发布一篇论文,一个多月还是“on hold”状态,换成edu邮箱第二天就被发布了。3、有可能是subject class选错了,编辑会帮你手动选择,然后发一封邮件告知你解除……报错缺失bbl等文件,这是因为从Menu中下载的话,是没有bbl文件的。论文被on hold。

沉迷单车的追风少年 3586

微信小程序照相和摄像实践

本次实验学习小程序媒体选择接口,实现拍照、相册选图、拍视频、相册选视频并在页面展示,完成预览图片拓展作业。开发中需要注意临时文件路径的生命周期,按钮禁用状态通过数据绑定动态控制,媒体相关 API 必须真机调试才能看到完整效果,加深对小程序媒体能力和数据绑定交互的理解。

2601_96878912的博客 189

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

微信小程序照相和摄像实战:chooseMedia 与图片预览

图片和视频API

djxzyr的博客 204

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

# 微信小程序案例:照相和摄像(wx.chooseMedia实现图片视频选择+扩展图片预览功能)

本文基于微信小程序wx.chooseMedia API实现拍照与相册选取图片、视频功能,并扩展添加图片预览按钮。通过数据绑定动态控制按钮状态,选择图片后启用预览功能,调用wx.previewImage实现全屏大图预览。代码完整,无需云服务,可直接运行,适用于学习媒体文件处理与页面交互控制。

2401_87969726的博客 206

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

微信小程序实战:wx.chooseMedia 照相摄像与图片预览功能实现

初始状态:页面加载后,无图片和视频。“预览图片”按钮由于绑定了disabled属性,呈现灰色不可点击状态。获取图片:点击“获取图片”,选择照片后,图片显示在蓝色框内,此时“预览图片”按钮变亮。预览图片:点击“预览图片”按钮,屏幕进入全屏预览模式,点击屏幕可返回。获取视频:点击“获取视频”选择视频后,视频在下方播放器中加载,可点击播放。运行例图:实验总结通过本次实验,我不仅熟悉了处理多媒体文件的基础用法,还学会了如何通过disabled属性与数据绑定({{!)相结合,来实现按钮的交互状态控制。

wyy1085的博客 158

案例 5.6 照相和摄像 —— wx.chooseMedia 与 wx.previewImage 实战

微信就会从底部弹出那个三选项面板 —— 这就是 PPT 里说的 "picker 组件",不用自己写 picker。一行调用就进入微信原生的全屏看图模式,支持双指缩放、左右滑动。绑上这个临时路径,自带播放控件直接能播。—— 没图就是 true,按钮自动变灰。四个组件纵向排开:两个。

Ct010的博客 134

微信小程序实战:照相和摄像(wx.chooseMedia)学习笔记

本案例通过一个小程序演示微信小程序媒体 API的功能与使用方法。小程序运行后,既可以从相册获取图片或视频,也可以直接调用相机拍摄图片和视频。wx.chooseMedia - 微信开放文档 / 小程序-开发-API / 媒体 / 视频。

qi0913的博客 175

微信小程序里实现拍照与摄像的简单记录

这里特别处理了一下按钮的禁用状态样式,当没有图片时,“预览图片”按钮会变成灰色不可点。这个接口最方便的地方在于,它会自动弹出一个底部的菜单,让用户自己选择是“拍摄”还是“从相册选择”,图片和视频都通用,交互体验很省事。拿到的都是临时文件路径,如果小程序关掉或者清缓存,这些文件可能会丢失。页面上放两个按钮,一个负责获取图片,一个负责获取视频。即可,同时可以顺手限制一下视频的最长拍摄时间为 30 秒,并默认调用后置摄像头。组件,用来展示选好的内容。另外,我在获取图片按钮下面加了一个“预览图片”按钮。

lmhshje的博客 116

# 微信小程序媒体 API 实战:wx.chooseMedia 实现照相与相册选图选视频

本文基于微信小程序实战案例,详解wx.chooseMedia与wx.previewImage的使用。通过“照相和摄像”功能实现图片/视频选取、回显及全屏预览,重点演示参数配置、动态按钮禁用逻辑与临时路径生命周期管理。涵盖真机调试、权限处理、多选扩展等开发要点,指导开发者高效迁移旧接口,构建稳定媒体交互体验。

cjs123456777的博客 71

微信小程序案例5.6:照相和摄像——wx.chooseMedia 选择图片与视频

本案例演示微信小程序媒体选择 API的使用方法,实现从相册或拍照获取图片、从相册或录像获取视频两大功能。功能扩展:增加一个"预览图片"按钮,没有图片的时候不可点击,有图片时可点击预览。点击"获取图片"按钮:弹出底部选择器,可选"拍摄"或"从相册选择",选中后图片显示在 image 组件;图片下方出现"预览图片"按钮(扩展),可点击时能全屏预览图片;点击"获取视频"按钮:弹出选择器,选中后视频显示在 video 组件,可点击播放。本案例的核心是一个 API 搞定图片+视频的选择/拍摄。

2402_87499293的博客 128

避坑指南:微信小程序拍照授权那些你可能忽略的细节

本文深入探讨了微信小程序拍照授权功能中容易被忽略的细节与实战技巧。针对用户拒绝授权后的柔性引导策略、不同操作系统与机型的兼容性处理,以及如何构建流畅、安全的拍照流程进行了详细解析,旨在帮助开发者提升用户体验与代码健壮性。

v6b7n8m9q0的博客 573

【Unity知识速递】第7期 Unity 6.6 深度解析:WebGPU 正式版与 WebAssembly64,Web 游戏的内存革命

如何启用 Wasm64?需要注意的是,Wasm64 需要浏览器支持 Memory64 提案,目前主流浏览器的最新版本都已支持。一句话总结: Unity 6.6 用 WebGPU 转正、Wasm64 16GB 内存和渐进式加载三连击,将 Web 游戏的体验天花板又往上推了一大截——Web 平台不再是"妥协版",正在成为真正的一等公民。Unity 6.6 新增了 WebAssembly64(Wasm64) 构建选项,这可能是本次更新中对 Web 游戏开发者影响最大的一项升级。

crystal_WJT的博客 427

设计模式(unity游戏研发版)

当你使用图形用户界面类时通常会遇到一个问题。比如,你创建了自定义按钮类并允许客户端在按钮中注入自定义代码,这样当用户按下按钮时就会触发这些代码。观察者模式允许任何实现了订阅者接口的对象订阅发布者对象的事件通知。你可在按钮中添加订阅机制,允许客户端通过自定义订阅类注入自定义代码。在Unity中,这就像UnityEvent在Inspector中绑定多个回调。

m0_63330263的博客 102

我给 DeepSeek 大肥鱼做了一款马里奥式闯关游戏

当全网都在把大肥鱼做成直播虚拟主播的时候,我决定给她做一款横版闯关游戏。

2301_79028807的博客 901
上一篇: 文件复制与删除功能实现
zcmdcsdn_
博客等级 码龄72天 0粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值