《Android Reference 翻译》 - Media - Image

Android上传图片到本地服务器 先把客户端代码给贴上 package com.example.administrator.myapplication; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import 阅读详情
继承关系
java.lang.Object
   ↳        android.media.Image

类概述
它是一个单一完整的图像Buffer,与常见的Media Source(如MediaCodec)搭配使用。

这个类允许应用程序通过一个或多个ByteBuffer对图像的像素数据进行高效直接地访问。每个ByteBuffer被封装在一个Image.Plane中,Image.Plane描述了像素数据在Plane中是如何布局的,因为这种ByteBuffer是直接访问获取的,不同于Bitmap,所以不能直接用于UI资源中。

因为Image通常是被硬件组件直接产生或消耗的,他们是有限资源且被整个系统共享,所以当不需要Image时应该立即关闭。
例如,当使用ImageReader从各种Media Source中读取Image时,如果旧有的Image对象未被关闭,有可能会阻止本次Image的读取(一旦未关闭的Image数到达最大值时,就无法读取新的Image)。当这种情况发生时,去读取新的Image会抛出IllegalStateException异常。


总览
内部类
class Image.Plane   图像数据的单一颜色Plane

公开方法

abstract void close()  Free up this frame for reuse.  释放此帧Image以便重复使用
abstract int getFormat()  Get the format for this image. 获取Image的格式
abstract int getHeight()  The height of the image in pixels. 以像素为单位的图像高度
abstract Plane[] getPlanes()  Get the array of pixel planes for this Image.  获取该Image中包含的像素Plane数组
abstract long getTimestamp()  Get the timestamp associated with this frame.  获取此帧Image的时间戳
abstract int getWidth()  The width of the image in pixels.  以像素为单位的图像宽度

公开方法
public abstract void close ()
释放此帧Image以便重复使用
当调用这个方法之后,任何对该Image对象的操作都会导致IllegalStateException异常,并且尝试去读取之前通过Image.plane.getBuffer()拿到的ByteBuffer对象中的数据时也会发生不预期的行为。
public abstract int getFormat ()
获取Image的格式
这种格式决定了代表图像所需要的ByteBuffer数量,以及每个像素数据在每个ByteBuffer中的总体布局。

这种格式是ImageFormat中的某一个,图像格式与Plane的映射关系如下:

格式Plane数量布局细节
JPEG1压缩数据,因此行和列的stride均为0,如果想要解压的话,请使用BitmapFactory#decodeByteArray.
YUV_420_8883一个亮度Plane,接着是Cb和Cr两个色度Plane,色度Plane的宽高是亮度平面宽高的一半(4:2:0采样),在每个Plane中每个像素样本具有8位,每个Plane都有自己的行和列stride.



public abstract int getHeight ()
以像素为单位的图像高度,对于一些颜色通道是子采样的格式而言,这是最大分辨率Plane的高度

public abstract Plane[] getPlanes ()
获取该Image中包含的像素Plane的数组,Plane的数量是由Image的格式决定的

public abstract long getTimestamp ()
获取此帧Image的时间戳,时间戳的单位是纳秒并且单调递增。但是,零点和是否这个Image的时间戳能与其它时间源或者其它Image的时间戳比较,这取决于该Image的来源。
public abstract int getWidth ()
以像素为单位的图像宽度,对于一些颜色通道是子采样的格式而言,这是最大分辨率Plane的宽度

转文章请标明出处:http://www.eyeandroid.com/thread-5905-1-1.html
(一)Android camera2 实现相机预览及获取预览帧数据流 一、本文重点说明 本文基于 android camera2 实现视频预览,暂未兼容 camera1 API,基础实现可以参考 googlesample Camera2 例子 android-Camera2Basic ,本文以工具类形式实现一步调用。 谷歌例子中没有具体指明预览帧的获取,即 camera1 setPreviewCallback 类似功能实现,具体是通过 ImageReader 中... 阅读详情

相关推荐

【信息科学与工程学】【安全领域】第一百四十二篇 零信任网络解决方案中的算法04

对于节点 i, 有功和无功功率平衡方程为: Pi​=Vi​∑j=1N​Vj​(Gij​cosθij​+Bij​sinθij​), Qi​=Vi​∑j=1N​Vj​(Gij​sinθij​−Bij​cosθij​)。下风向某点 (x,y,z)的浓度 C为: C=2πuσy​σz​Q​exp(−2σy2​y2​)[exp(−2σz2​(z−H)2​)+exp(−2σz2​(z+H)2​)], 其中 Q是源强, u是风速, H是有效源高, σy​,σz​是水平和垂直扩散参数。

weixin_49199313的博客 1413

android.media.image,Convert android.media.Image (YUV_420_888) to Bitmap

I'm trying to implement camera preview image data processing using camera2 api as proposed here: Camera preview image data processing with Android L and Camera2 API.I successfully receive callbacks us...

weixin_34977368的博客 574

Android中Image的简单实例详解

在多媒体应用中,Image是最基础的功能模块,接下来我们将看看在Android中是如何获取和存储Image的。Android内嵌的Image获取和存储功能,可以让我们对于整个媒体框架有个比较全面的了解,同时为audio和video的学习打下基础。 一、Image的获取可以通过调Android自带的Camera应用来完成。该应用含有一个Intent-Filter。通过使用 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent)就可以启动Camera应用了。 二、Ima

Android image的示例 拍照显示

在多媒体应用中,Image是最基础的功能模块,接下来我们将看看在Android中是如何获取和存储Image的。Android内嵌的Image获取和存储功能,可以让我们对于整个媒体框架有个比较全面的了解,同时为audio和video的学习打下基础。 一、Image的获取可以通过调Android自带的Camera应用来完成。该应用含有一个Intent-Filter。通过使用Intent i...

weixin_30279315的博客 172

[软考]系统架构设计师 备考经验分享(一) - 备考计划篇

前言 上周末刚刚结束了软考架构师的考试,自我感觉考的还可以,大概率是过了。 两次参加软考,一次中级嵌入式,一次高级架构师,都是备考不到两个月时间,尤其是架构师这次考试内容和本职工作有不小的差别,并且需要同时备考三个科目,在高强度地备考中感觉是摸索出到了一点软考的技巧与经验。 打算趁还记得,赶紧写几篇文章做下梳理总结,算是给将来自己考系分、高项或者其他考试做个记录,也希望能够帮到正在备考的大家。 先把第一步,个人的备考计划分享给大家。 自身情况分析 首先,请大家一定先明确三个问题,这三个问题会直接影响到你的

_ 6405

CANape快速上手

文章帮助记录CANape学习过程。

小弱鸡的博客 1万+

android image 转yuv_转换android.media.Image(YUV_420_888)为位图

I'm trying to implement camera preview image data processing using camera2 api as proposed here: Camera preview image data processing with Android L and Camera2 API.I successfully receive callbacks us...

weixin_30905655的博客 751

用Python的fengwo模块复刻通达信筹码峰(COST/WINNER),选股效率提升10倍

本文介绍了如何使用Python的fengwo模块高效复刻通达信的筹码峰(COST/WINNER)计算,显著提升选股效率。通过C++内核与多线程优化,fengwo模块将传统Python实现的数小时计算压缩至分钟级,解决了量化交易中的性能瓶颈问题。文章详细解析了筹码峰计算原理、fengwo模块的技术架构及实战应用,助力量化开发者构建高效选股系统。

weixin_29062823的博客 440

Android多媒体开发 Pro Android Media 第一章 Android图像编程入门 4

使用MediaStore检索图像 Android的共享内容提供者功能很强大,利用他们我们可以非常容易的创建类型画廊(gallery)的应用。由于内容提供者,本例中是MediaStore,可以在应用间共享,当我们创建使自己的应用显示图像时,不必真去创建一个相机应用并保存图像。既然大多数应用使用缺省的MediaStore,我们可以利用这个来创建我们自己的画廊应用。 从MediaStore选择是

dairyman的专栏 1980

三相五柱式消弧线圈自动测控装置设计与实现

本文设计了一种基于STM32的三相五柱式消弧线圈自动测控装置。该装置采用信号注入法检测系统对地电容电流,通过PID自适应算法调节消弧线圈电感值,实现单相接地故障时的快速补偿。硬件系统包含信号采集、注入、控制执行等模块,软件采用Goertzel算法提取特征频率信号,结合增量式PID实现精确控制。实验结果表明,装置电容检测误差小于2%,调谐响应时间小于50ms,满足配电网对消弧线圈自动调谐的技术要求。

AI的内部世界的博客 239

【教程4>第4章>第12节】通过FPGA实现基于FFT变换的频偏估计和补偿

基于FFT变换的频偏估计和补偿,其基本原理如下:而频偏补偿的目的是将频偏后的信号频谱移回原来的位置。

FPGA/MATLAB学习教程/源码/项目合作开发 882

UE4/UE5 MediaTexture黑屏排查:从媒体源到渲染的完整链路调试指南

在实时图形渲染与多媒体应用开发中,纹理(Texture)是承载和呈现图像数据的基础资源。其工作原理是通过GPU将位图数据映射到3D模型表面或2D界面元素上,实现视觉细节的呈现。MediaTexture作为虚幻引擎(UE4/UE5)媒体框架的核心组件,其技术价值在于桥接了动态视频流、摄像头捕捉等外部媒体数据与引擎的渲染管线,是实现视频播放、AR交互、虚拟制片等高级功能的关键。在实际工程实践中,开发者常遇到MediaTexture渲染异常(如黑屏、无显示)的问题,这通常涉及从资源加载、播放器状态同步到材质渲染的

weixin_30755393的博客 459

Python爬虫实战:如何抓取POI信息(公共场所)位置信息

获取公共场所的信息:如餐厅、商店、医院、景点等。抓取POI的基本信息:如名称、类别、地址、评分等。获取POI的地理坐标:经度和纬度信息。存储POI数据:将抓取到的POI信息存储到本地数据库中。通过本篇文章,我们详细介绍了如何使用Python爬虫抓取POI信息。通过Google Maps API和OpenStreetMap(Overpass API),我们展示了如何获取餐厅、商店、医院等公共场所的位置信息,并进一步探讨了如何处理分页、存储数据以及反爬虫策略。

2201_76125261的博客 380

Docker 基础知识 + 实操

部分图片来自于网上部分博主。

2301_80387628的博客 621

17、Nimble 包开发与并行编程指南

本文介绍了Nimble包的开发与版本管理流程,涵盖语义化版本控制规范及发布步骤;深入探讨了Nim中的并行编程基础,包括并发与并行的区别、threads模块与threadpool模块的使用方法及其差异;分析了线程执行的不确定性、线程池的优势,并提供了线程同步和资源管理的实践示例,帮助开发者高效构建稳定、高性能的Nim应用程序。

wine的专栏 57

moveit——基于octomap的碰撞检测

机械臂对棚顶进行碰撞检测。

如果想成为中心,那么就到中心去吧。 1356

安卓Camera2用ImageReader获取NV21源码分析

以前如何得到Camera预览流回调 如何使用Camera2得到预览流的回调 是否可以通过ImageReader直接得到NV21回调呢 ImageReader数据流回调的流程源码分析

分享Android应用和系统开发、音视频编码、性能优化相关知识 2779

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android Camera2 Image

如果图像是通过 ImageWriter.dequeueInputImage() 从 ImageWriter 获取的,则调用此方法后,应用程序填充的任何图像数据都将丢失,并且图像将返回给 ImageWriter 以供重用。(不支持的用例包括通过 MediaCodec 获取的 Image 实例,以及 Android P 之前的版本上的 ImageWriter)。例如,当使用 ImageReader 类从各种媒体源读取图像时,一旦达到最大未完成图像计数,不关闭旧的 Image 对象将阻止新图像的可用性。

闲暇部落 1744

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Image常见方法解析

Image类提供了访问图像数据的方法,允许应用程序直接处理图像数据。以下是Image图像格式和属性: 获取图像的格式,如 JPEG、YUV 等。getWidth(): 获取图像的宽度。: 获取图像的高度。: 获取图像的时间戳。: 获取图像的裁剪矩形。图像数据访问: 获取图像的颜色平面数组,用于访问图像数据的每个平面。: 获取图像关联的,用于直接访问 GPU 和硬件。图像数据处理close(): 关闭图像,释放图像资源,防止访问已关闭的图像。其他功能: 设置图像的时间戳。

LiggerBill的博客 1940

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Camera2 YUV420_888--android image plane的解释

getPixelStride()获取行内连续两个颜色值之间的距离(步长)。getRowStride()获取行间像素之间的距离。 Camera2 YUV420_888 原创lbknxy 发布于2017-01-23 16:06:35 阅读数 7955 收藏 展开 Camera2 YUV420_888转RGB 官网文档介绍 Android PAI 对 YUV420_888的介绍 ,大致意...

u010029439的博客 2865

[Media][Image] 一张图理解Android系统图片格式

参考 Android Bitmap(位图)详解 Android Bitmap变迁与原理解析(4.x-8.x) raw图像格式 对颜色空间YUV、RGB的理解 拜耳阵列(Bayer Pattern)简介

TaylorPotter的博客 2073

android 代码获取屏幕图像,安卓获取屏幕以及获得像素点 ~ 大树洞

由于一些不可告人的需求,所以开始寻找各种可以实现安卓实时获得屏幕上某个像素点的功能首先,将需求进行拆解,分别为1、获得屏幕2、获得屏幕上一个像素点获得屏幕获得屏幕分为比较多种的方式,在以前大致分为adb screencap 获取当前屏幕linux 底层 通过frameBuffer获得屏幕信息我没试过我也不知道好不好用参考1参考2通过 MediaProjection 屏幕录制获得图像参考我使用的是 ...

weixin_39640024的博客 2299

android Camera image plane[0] plane[1] plane[2] 详解

都知道拍完照之后都会回调 private ImageReader.OnImageAvailableListener imageAvailableListener= new ImageReader.OnImageAvailableListener() { // 当照片数据可用时激发该方法 @Override public void onImageAvailable(ImageReader reader) { 在拿到ImageReader时我们的操作

hipeboy的博客 3919

Android:Image类转换为Bitmap类

Image类图像有很多格式,根据格式不同转换方式也不同,主要有JPEG格式的转换和YUV格式的转换,网上搜索Image Bitmap转换找到的绝大部分都是指JPEG格式的Image转Bitmap 0.查看自己Image类图像的格式 image.getFormat() 返回一个int型,在android.graphics.ImageFormat中即可对应类型(需要注意int类型和16进制的转换) 列举常见的: int 代表格式 1 JPEG 35 YUV_420_888 1.Ima

xu.hyj 1万+

Android Camera2(2)-Image中获得YUV数据以及YUV格式理解

Image类允许应用通过一个或多个ByteBuffers直接访问Image的像素数据, ByteBuffer包含在Image.Plane类中,同时包含了这些像素数据的配置信息。因为是作为提供raw数据使用的,Image不像Bitmap类可以直接填充到UI上使用。因为Image的生产消费是跟硬件直接挂钩的,所以为了效率起见,Image如果不被使用了应该尽快的被销毁掉。如果Image的数量到达了maxImages,不关闭之前老的Image,新的Image就不会继续生产。

Jwfaikeyan的博客 3235
上一篇: [Android Training视频系列] 8.3 Dealing with Audio Output Hardware
下一篇: CameraManager与CameraDevice与ICameraService的对应关系
cofftech
博客等级 码龄16年 46粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值