Android开发之基础----------多媒体图片加载、拍照和摄像(一)

Android多媒体高级编程(一)——Camera和简单的图像处理 1.外置存储卡和内置存储卡 使用Environment.getExternalStorageDirectory().getAbsolutePath()来获取安卓存储卡位置,根据在设置里的默认存储位置,来获取不同的路径,如果设置默认存储在内置存储卡,在路径为/storage/emulated/0(android 4.2.2),如果是外部存储,则路径为/storage/sdcard1 2.使用照相 阅读详情

多媒体:文字、图片、音频、视频

1.图片大小 = 图片的总像素 * 每个像素占用的大小    

图像格式:

* 单色图:每个像素占用1/8个字节

* 16色图:每个像素占用1/2个字节
* 256色图:每个像素占用1个字节
* 24位图:每个像素占用3个字节

Android系统以ARGB表示每个像素,所以每个像素占用4个字节,很容易内存溢出,所以需要对图片进行缩放。

图片缩放加载步骤:

1.获取屏幕尺寸。宽高

Display dp = getWindowManager().getDefaultDisplay();
    	int screenWidth = dp.getWidth();
    	int screenHeight = dp.getHeight();
2.获取图片宽高,

<span style="white-space:pre">	</span>Options opts = new Options();
	//请求图片属性但不申请内存
    	opts.inJustDecodeBounds = true;
<span style="white-space:pre">	</span>//加载图片资源
    	BitmapFactory.decodeFile("sdcard/dog.jpg", opts);
    	int imageWidth = opts.outWidth;
    	int imageHeight = opts.outHeight;
3.图片的宽高除以屏幕宽高,算出宽和高的缩放比例,取较大值作为图片的缩放比例

<span style="white-space:pre">	</span>int scale = 1;
    	int scaleX = imageWidth / screenWidth;
    	int scaleY = imageHeight / screenHeight;
    	if(scaleX >= scaleY && scaleX > 1){
    		scale = scaleX;
    	}
    	else if(scaleY > scaleX && scaleY > 1){
    		scale = scaleY;
    	}
4.按照缩放比例加载图片

//设置缩放比例
		opts.inSampleSize = scale;
		//为图片申请内存
    	opts.inJustDecodeBounds = false;
    	Bitmap bm = BitmapFactory.decodeFile("sdcard/dog.jpg", opts);
    	iv.setImageBitmap(bm);
如果需要对加载的图片进行编辑,那么就需要在内存中创建一个已经加载图片的副本,因为直接加载的Bitmap对象是只读的,不允许修改,

**********创建副本:

//加载原图
	Bitmap srcBm = BitmapFactory.decodeFile("sdcard/photo3.jpg");
        iv_src.setImageBitmap(srcBm);
        //创建与原图大小一致的空白bitmap
        Bitmap copyBm = Bitmap.createBitmap(srcBm.getWidth(), srcBm.getHeight(), srcBm.getConfig());
        //定义画笔
        Paint paint = new Paint();
        //把纸铺在画版上
        Canvas canvas = new Canvas(copyBm);
        //把srcBm的内容绘制在copyBm上
        canvas.drawBitmap(srcBm, new Matrix(), paint);
        iv_copy.setImageBitmap(copyBm);
***************图片的特效处理以及画板在下一个博客中总结。

保存图片到sdcard:

FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(new File("sdcard/dazuo.png"));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//保存图片
    	copyBm.compress(CompressFormat.PNG, 100, fos);
把保存到sdcard中的图片更新到图库中:

系统每次收到sdcard准备就绪广播时,就会去遍历sdcard中的文件和文件夹,把遍历到的所有多媒体文件在MediaStore数据库中保存一个索引,该索引

包括多媒体文件的文件名、大小,路径。

图库每次打开时并不会去遍历sdcard获取图片,而是通过内容提供者从MediaStore数据库中获取图片的信息,然后读取该图片。

系统开机或者点击加载sdcard按钮,就会发送sdcard就绪广播,我们也可以手动发送就绪广播。代码如下:

<span style="white-space:pre">	</span>Intent intent = new Intent();
    	intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
    	intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
    	sendBroadcast(intent);
***********拍照

启动系统提供的拍照程序

//隐式启动系统提供的拍照Activity
	Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
	//设置照片的保存路径
        File file = new File(Environment.getExternalStorageDirectory(), "haha.jpg"); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
        startActivityForResult(intent, 0);
*****************摄像************

启动系统的摄像程序

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        File file = new File(Environment.getExternalStorageDirectory(), "haha.3gp"); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
	//设置保存视频文件的质量
        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
        startActivityForResult(intent, 0);









STM32F103到F407移植OLED,为啥F4屏幕不亮?一个延时函数搞定时序问题 本文详细分析了STM32F103到F407移植OLED时屏幕不亮的问题,指出时钟频率差异导致的时序问题是关键原因。通过对比F103和F407的时钟架构差异,提供了精确延时函数的实现方法,并指导在I2C通信关键点插入适当延时,确保OLED正常显示。文章还涵盖了完整的测试方案和高级优化技巧,帮助开发者彻底解决移植中的时序问题。 阅读详情

相关推荐

单细胞测序流程(五)t-sne聚类分析和寻找marker基因

系列文章目录 单细胞测序流程(一)简介与数据下载 单细胞测序流程(二)数据整理 单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图 单细胞测序流程(四)主成分分析——PCA 本期主讲内容——t-sne聚类分析和寻找marker基因 介绍:T-SNE是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。 一、课前准备 之前所使用的数据 R语言的IDE 二、过程 聚类分析的目的是根据细胞的差别所进行细胞分群,两个..

qq_45478665的博客 2万+

Android多媒体学习二:检索Android的图片库,并显示

上一篇中实例讲解了Android中的Camera的调用和图片的存储,这篇文章,我们将学习如何检索并显示媒体库中的图片。   这里有个问题需要注意,如果你在模拟器已经启动的情况下,push了几张图片到SDCard中,建议将模拟器关了,再重新启动 一下,否则,刚刚添加的图片,是没有办法获取到的。这是因为Android是在系统启动的时候来扫描模拟器上SDCard中多媒体文件的。     闲话

swdrt的专栏 1248

STM32+4G模块+MQTT协议:从零构建稳定可靠的物联网通讯链路

本文详细介绍了如何利用STM32、4G模块和MQTT协议构建稳定可靠的物联网通讯链路。通过硬件选型、AT指令配置和MQTT连接实战,帮助开发者实现低功耗、高可靠性的数据传输,特别适合户外和移动场景应用。

weixin_29191081的博客 334

android开启照相功能,Android打开系统相机并拍照的2种显示方法

本文实例为大家分享了Android打开系统相机并拍照的具体实现代码,供大家参考,具体内容如下目标效果:第二张为点击第一个按钮拍照后显示的,比较模糊,第三章为点击第二个按钮拍照后显示的,比较清楚。1.activity_main.xml页面设置布局。activity_main.xml页面:xmlns:tools="http://schemas.android.com/tools"android:lay...

weixin_36075067的博客 2206

Windows 10/11 零基础配置 SillyTavern 连接 Claude API 完整指南(含 Node.js 环境搭建)

本文提供Windows 10/11系统下零基础配置SillyTavern连接Claude API的完整教程,涵盖Node.js环境搭建、SillyTavern初始化及API连接配置等关键步骤。通过详细的操作指南和实用技巧,帮助用户快速搭建AI聊天界面并优化对话体验,实现与Claude AI的高效交互。

weixin_30642561的博客 134

T型三电平关管顺序要求

摘要: T型三电平拓扑中,IGBT关断必须遵循“外管先关、内管后关”的时序,否则易导致器件损坏。正常导通时,外管与内管共同分担电压;正确关断时,外管先关使电流经内管续流至中点,避免电压过冲;若内管先关,电流路径被强制切断,杂散电感引发高压尖峰击穿器件。这一时序本质是为电流提供低应力续流路径,需通过硬件或软件严格保障。

yun0804的博客 2373

Android多媒体应用开发-控制摄像头拍照

今天是2012年8月1日,建军节,首先庆祝祖国建军85周年,这也是中国体育军团参加伦敦奥运会的第5天,我有空也看了几场赛事,中国已经拿了13枚金牌,不错的成绩,有成功,自然也有失败。既然要有奥运精神,那就别太在乎结果,尽力就好。但对于中国来说,金牌的重量是可想而知的,没有拿到金牌你什么都不是,那些为祖国奋战的运动员们因没有拿到奖牌而默默离开,这也是现实的残酷,你所得到的尊重是建立在你所取得的成就...

mmdev 251

YOLOv11改进 | Neck篇 | 轻量化跨尺度跨通道融合颈部CCFM助力YOLOv11有效涨点

到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的平均质量分98分,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,目前本专栏免费阅读(暂时,大家尽早关注不迷路~)如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~YOLOv11有效涨点专栏——本专栏持续复习各种顶会内容——科研必备​ycb。

Snu77的博客 8079

Android多媒体之调用摄像头和相册

调用摄像头拍照和从相册中选择图片在Android中都是常见的功能。它们都需要申请相应的权限,并通过设置Intent来启动相应的Activity。对于拍照功能,还需要考虑图片的存储和Uri的获取;对于从相册选择图片,主要是处理用户选择的图片Uri。在实际开发中,可以结合使用这些功能,为用户提供更丰富的图片获取方式。要在Android应用中实现从相册中选择图片的功能,你需要使用。

VitorLiu的博客 1903

nuScenes数据集详细介绍

nuScenes网上介绍资料较多,但是大部分仅仅是对官网的翻译,缺乏各个文件的内在联系介绍。例如,nuScenes激光雷达的数据格式,点云包含哪几种属性。再比如,sample文件夹和sweeps文件夹下的文件关系,以及是如何在相关json文件中体现的。本文将详细介绍nuScenes数据集的各个部分。

叶子的博客 1万+

高级数据库--作业及答案

中科大金培权老师的高级数据库课程作业及答案

一杯水果茶!足矣~ 1655

Android开发常用开源框架:图片处理

1、图片加载,缓存,处理 框架名称 功能描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库,已过时 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库,使用的App有:网易新闻 GlidePalette Androi

JackChan 3万+

【目标追踪】python背景模型减除法原理及其实现

python基于背景模型差法的视频目标追踪帧差法的问题:背景模型差法目标追踪原理1. 基本思路:2. 图例讲解:3. 存在的问题&如何解决:4. 最终效果预览第一步——调用摄像头:1. 使用opencv打开视频or摄像头:2. 读取逐帧图片:第二步——处理图片:1. 转换成灰度图:3. 累加权重重构背景:3. 计算像素差:3. 使用中值滤波和膨胀腐蚀去噪:3.1 中值滤波:3.2 图像腐蚀...

梁瑛平的博客 1948

18、图片 & 多媒体

一、图片处理 1.1、BitMap 1.Bitmap介绍 Bitmap实现在android.graphics包中。但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化。 这必然是某个辅助类提供了创建Bitmap的接口,而这个类的实现通过JNI接口来实例化Bitmap的,这个类就是BitmapFactory。 Bitmap是一片连续的内存空间,而我们的应用程序...

weixin_33816611的博客 228

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android的多媒体编程

多媒体编程 1、什么是多媒体? 多种媒体的综合。 图片、音乐、视频等; ##图片的常见格式: 1.bmp:以高质量保存所有类型的图片,并将其应用于计算机; 255 KB,255*340像素,24位深度 计算机表示图形的时候时候是使用像素点来表示的,每个像素点都有一个颜色,每个颜色都是使用6位16进制的数值来表示的,一个像素点使用24个bit表示。 ...

angzhu9302的博客 203

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android基础之六——多媒体编程

01_计算机表示图形的形式 png:以高质量的形式保存图片,并将其应用于计算机或网络;203 KB ,255*340像素,位深度32; png是计算机图形的工业压缩算法,使用类map的一种数据结构来存储文件。文件体积变小,颜色不会失真。 jpg:以良好的质量的保存图片,并将其应用于计算机、电子邮件、或者网络;36.4 KB , 255*340像素,位深度24; jp

duruishan的博客 407

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

《第十九章 多媒体 - 摄像头与相册》

在 Android 应用开发中,与多媒体设备的交互是丰富应用功能和提升用户体验的重要手段。本章将重点介绍如何调用摄像头拍照以及从相册选取图片的相关知识。一、多媒体交互的重要性在当今的移动应用中,用户对于能够直接使用设备的摄像头和相册功能有着较高的需求。例如,社交应用中的照片分享、图像编辑应用中的素材获取、办公应用中的文件扫描等,都离不开与摄像头和相册的交互。二、调用摄像头拍照。

weixin_47266126的博客 631

Android仿微信多媒体选择器 - SmartMediaPicker

项目GitHub:github.com/BzCoder/Sma… 2019.6.20 更新 版本已更新至【1.1.1】详情参考GitHub。 多媒体选择器 SmartMediaPicker 这是一款经过简单分装的多媒体选择器,集合和图片选择,拍照,拍摄短视频功能。主要还是站在了巨人的肩膀上,封装了以下两个库,修复仿微信拍照Android控件中存在的几个BUG。也欢迎在留言中提出更多的使用配置需...

weixin_34055910的博客 629

[Android开发学习] day06

对于android里的接口类,直接new!!!   手机SD卡路径获取 通过代码,获取sd卡路径。 获取SDcard:mnt/sdcard   注意要补充上【反斜杠】!!! String path=Environment.getExternalStorageDirectory().getAbsolutePath(); System.out.println(path); 获取SDca

moweiyang0214的专栏 763

安卓拍照+音乐播放

MainActivity public class MainActivity extends AppCompatActivity {     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);

無趣的博客 332

05Android学习从零单排之Androidmultimedia(多媒体)

05Android学习从零单排之AndroidMultimedia(多媒体)读了那么多年的书让我明白一个道理。人要稳重,不要想到啥就做啥。做一行越久即使你不会,几年之后慢慢的你也会了,加上一点努力你或许你能成为别人眼中的专家。 注:本章blog主要学习Android下图片、音频、视频的处理。 Android下大图片的处理在平时开发中,如果我们加载一个图片分辨率或者加载批量图片,超过了手机的屏幕分

倾锋落颖花 2558

安卓虚拟相机解决方案:Xposed框架下的摄像头替换技术实现

在移动应用开发、隐私保护以及多媒体内容创作领域,安卓虚拟相机技术提供了一种创新的解决方案,允许开发者将物理摄像头输入替换为预录制的视频流。本项目基于Xposed框架实现了完整的虚拟相机功能,支持Android 5.0及以上系统,为应用测试、隐私保护和内容创作提供了灵活的技术支持。 ## 技术架构与实现原理 安卓虚拟相机模块的核心技术基于Xposed框架的Hook机制,通过拦截系统Camera

gitblog_00776的博客 230

Android多媒体编程基础

#多媒体概念 * 文字、图片、音频、视频 #计算机图片大小的计算 > 图片大小 = 图片的总像素 * 每个像素占用的大小 * 单色图:每个像素占用1/8个字节 * 16色图:每个像素占用1/2个字节 * 256色图:每个像素占用1个字节 * 24位图:每个像素占用3个字节 --- #加载大图片到内存 >Android系统以ARGB表示每个像素,所以每个像素占用4个字节,

z_fishLong的博客 477

Android多媒体之调用摄像头和从本地相册中选择图片

概述:这个例程的实现的功能是:拍照,自动压缩图片,以及从本地相册选择图片。 需要加载权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>demo:public class MainActivity extends Activity implements View.

NiZhuanXingHeIT的博客 2648
上一篇: Android开发之基础-------------Get请求和Post请求
下一篇: Android开发之基础---------多媒体音乐和视频播放
杨鑫校
博客等级 码龄11年 24粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值