android PixelFormat与ImageFormat的对比
2016-06-24 17:17
489 查看
PixelFormat
public class PixelFormat
extends Object
java.lang.Object | |
↳ | android.graphics.PixelFormat |
Summary
| |
---|---|
int | A_8 |
int | JPEG This constant was deprecated in API level 8. use ImageFormat.JPEGinstead. |
int | LA_88 |
int | L_8 |
int | OPAQUE System chooses an opaque format (no alpha bits required) |
int | RGBA_4444 |
int | RGBA_5551 |
int | RGBA_8888 |
int | RGBX_8888 |
int | RGB_332 |
int | RGB_565 |
int | RGB_888 |
int | TRANSLUCENT System chooses a format that supports translucency (many alpha bits) |
int | TRANSPARENT System chooses a format that supports transparency (at least 1 alpha bit) |
int | UNKNOWN |
int | YCbCr_420_SP This constant was deprecated in API level 8. use ImageFormat.NV21instead. |
int | YCbCr_422_I This constant was deprecated in API level 8. use ImageFormat.YUY2instead. |
int | YCbCr_422_SP This constant was deprecated in API level 8. use ImageFormat.NV16instead. |
| |
---|---|
public int | bitsPerPixel |
public int | bytesPerPixel |
|
---|
PixelFormat() |
| |
---|---|
static boolean | formatHasAlpha(int format) |
static void | getPixelFormatInfo(int format, PixelFormat info) |
|
---|
![]() From class java.lang.Object |
Constants
A_8
Added in API level 1int A_8
Constant Value: 8 (0x00000008)
JPEG
Added in API level 1int JPEG
This constant was deprecated in API level 8.
use
ImageFormat.JPEGinstead.
Constant Value: 256 (0x00000100)
LA_88
Added in API level 1int LA_88
Constant Value: 10 (0x0000000a)
L_8
Added in API level 1int L_8
Constant Value: 9 (0x00000009)
OPAQUE
Added in API level 1int OPAQUE
System chooses an opaque format (no alpha bits required)
Constant Value: -1 (0xffffffff)
RGBA_4444
Added in API level 1int RGBA_4444
Constant Value: 7 (0x00000007)
RGBA_5551
Added in API level 1int RGBA_5551
Constant Value: 6 (0x00000006)
RGBA_8888
Added in API level 1int RGBA_8888
Constant Value: 1 (0x00000001)
RGBX_8888
Added in API level 1int RGBX_8888
Constant Value: 2 (0x00000002)
RGB_332
Added in API level 1int RGB_332
Constant Value: 11 (0x0000000b)
RGB_565
Added in API level 1int RGB_565
Constant Value: 4 (0x00000004)
RGB_888
Added in API level 1int RGB_888
Constant Value: 3 (0x00000003)
TRANSLUCENT
Added in API level 1int TRANSLUCENT
System chooses a format that supports translucency (many alpha bits)
Constant Value: -3 (0xfffffffd)
TRANSPARENT
Added in API level 1int TRANSPARENT
System chooses a format that supports transparency (at least 1 alpha bit)
Constant Value: -2 (0xfffffffe)
UNKNOWN
Added in API level 1int UNKNOWN
Constant Value: 0 (0x00000000)
YCbCr_420_SP
Added in API level 1int YCbCr_420_SP
This constant was deprecated in API level 8.
use
ImageFormat.NV21instead.
Constant Value: 17 (0x00000011)
YCbCr_422_I
Added in API level 5int YCbCr_422_I
This constant was deprecated in API level 8.
use
ImageFormat.YUY2instead.
Constant Value: 20 (0x00000014)
YCbCr_422_SP
Added in API level 1int YCbCr_422_SP
This constant was deprecated in API level 8.
use
ImageFormat.NV16instead.
Constant Value: 16 (0x00000010)
Fields
bitsPerPixel
Added in API level 1int bitsPerPixel
bytesPerPixel
Added in API level 1int bytesPerPixel
Public constructors
PixelFormat
Added in API level 1PixelFormat ()
Public methods
formatHasAlpha
Added in API level 1boolean formatHasAlpha (int format)
Parameters | |
---|---|
format | int |
Returns | |
---|---|
boolean |
getPixelFormatInfo
Added in API level 1void getPixelFormatInfo (int format, PixelFormat info)
Parameters | |
---|---|
format | int |
info | PixelFormat |
ImageFormat
public class ImageFormat
extends Object
java.lang.Object | |
↳ | android.graphics.ImageFormat |
Summary
| |
---|---|
int | DEPTH16 Android dense depth image format. |
int | DEPTH_POINT_CLOUD Android sparse depth point cloud format. |
int | FLEX_RGBA_8888 Multi-plane Android RGBA format This format is a generic RGBA format, capable of describing most RGBA formats, with 8 bits per color sample. |
int | FLEX_RGB_888 Multi-plane Android RGB format This format is a generic RGB format, capable of describing most RGB formats, with 8 bits per color sample. |
int | JPEG Compressed JPEG format. |
int | NV16 YCbCr format, used for video. |
int | NV21 YCrCb format used for images, which uses the NV21 encoding format. |
int | PRIVATE Android private opaque image format. |
int | RAW10 Android 10-bit raw format This is a single-plane, 10-bit per pixel, densely packed (in each row), unprocessed format, usually representing raw Bayer-pattern images coming from an image sensor. |
int | RAW12 Android 12-bit raw format This is a single-plane, 12-bit per pixel, densely packed (in each row), unprocessed format, usually representing raw Bayer-pattern images coming from an image sensor. |
int | RAW_PRIVATE Private raw camera sensor image format, a single channel image with implementation depedent pixel layout. |
int | RAW_SENSOR General raw camera sensor image format, usually representing a single-channel Bayer-mosaic image. |
int | RGB_565 RGB format used for pictures encoded as RGB_565. |
int | UNKNOWN |
int | YUV_420_888 Multi-plane Android YUV 420 format This format is a generic YCbCr format, capable of describing any 4:2:0 chroma-subsampled planar or semiplanar buffer (but not fully interleaved), with 8 bits per color sample. |
int | YUV_422_888 Multi-plane Android YUV 422 format This format is a generic YCbCr format, capable of describing any 4:2:2 chroma-subsampled (planar, semiplanar or interleaved) format, with 8 bits per color sample. |
int | YUV_444_888 Multi-plane Android YUV 444 format This format is a generic YCbCr format, capable of describing any 4:4:4 (planar, semiplanar or interleaved) format, with 8 bits per color sample. |
int | YUY2 YCbCr format used for images, which uses YUYV (YUY2) encoding format. |
int | YV12 Android YUV format. |
|
---|
ImageFormat() |
| |
---|---|
static int | getBitsPerPixel(int format) Use this function to retrieve the number of bits per pixel of an ImageFormat. |
|
---|
![]() From class java.lang.Object |
Constants
DEPTH16
Added in API level 23int DEPTH16
Android dense depth image format.
Each pixel is 16 bits, representing a depth ranging measurement from a depth camera or similar sensor. The 16-bit sample consists of a confidence value and the actual ranging measurement.
The confidence value is an estimate of correctness for this sample. It is encoded in the 3 most significant bits of the sample, with a value of 0 representing 100% confidence, a value of 1 representing 0% confidence,
a value of 2 representing 1/7, a value of 3 representing 2/7, and so on.
As an example, the following sample extracts the range and confidence from the first pixel of a DEPTH16-format
Image,
and converts the confidence to a floating-point value between 0 and 1.f inclusive, with 1.f representing maximum confidence:
ShortBuffer shortDepthBuffer = img.getPlanes()[0].getBuffer().asShortBuffer(); short depthSample = shortDepthBuffer.get() short depthRange = (short) (depthSample & 0x1FFF); short depthConfidence = (short) ((depthSample >> 13) & 0x7); float depthPercentage = depthConfidence == 0 ? 1.f : (depthConfidence - 1) / 7.f;
This format assumes
an even width
an even height
a horizontal stride multiple of 16 pixels
y_size = stride * height
When produced by a camera, the units for the range are millimeters.
Constant Value: 1144402265 (0x44363159)
DEPTH_POINT_CLOUD
Added in API level 23int DEPTH_POINT_CLOUD
Android sparse depth point cloud format.
A variable-length list of 3D points plus a confidence value, with each point represented by four floats; first the X, Y, Z position coordinates, and then the confidence value.
The number of points is
(size of the buffer in bytes) / 16.
The coordinate system and units of the position values depend on the source of the point cloud data. The confidence value is between 0.f and 1.f, inclusive, with 0 representing 0% confidence and 1.f representing
100% confidence in the measured position values.
As an example, the following code extracts the first depth point in a DEPTH_POINT_CLOUD format
Image:
FloatBuffer floatDepthBuffer = img.getPlanes()[0].getBuffer().asFloatBuffer(); float x = floatDepthBuffer.get(); float y = floatDepthBuffer.get(); float z = floatDepthBuffer.get(); float confidence = floatDepthBuffer.get();
Constant Value: 257 (0x00000101)
FLEX_RGBA_8888
Added in API level 23int FLEX_RGBA_8888
Multi-plane Android RGBA format
This format is a generic RGBA format, capable of describing most RGBA formats, with 8 bits per color sample.
Images in this format are always represented by four separate buffers of data, one for each color plane. Additional information always accompanies the buffers, describing the row stride and the pixel stride for
each plane.
The order of planes in the array returned by
Image#getPlanes()is
guaranteed such that plane #0 is always R (red), plane #1 is always G (green), plane #2 is always B (blue), and plane #3 is always A (alpha). This format may represent pre-multiplied or non-premultiplied alpha.
All four planes are guaranteed to have the same row strides and pixel strides.
For example, the
Imageobject
can provide data in this format from a
MediaCodecthrough
getOutputImage(int)object.
See also:
Image
MediaCodec
Constant Value: 42 (0x0000002a)
FLEX_RGB_888
Added in API level 23int FLEX_RGB_888
Multi-plane Android RGB format
This format is a generic RGB format, capable of describing most RGB formats, with 8 bits per color sample.
Images in this format are always represented by three separate buffers of data, one for each color plane. Additional information always accompanies the buffers, describing the row stride and the pixel stride for
each plane.
The order of planes in the array returned by
Image#getPlanes()is
guaranteed such that plane #0 is always R (red), plane #1 is always G (green), and plane #2 is always B (blue).
All three planes are guaranteed to have the same row strides and pixel strides.
For example, the
Imageobject
can provide data in this format from a
MediaCodecthrough
getOutputImage(int)object.
See also:
Image
MediaCodec
Constant Value: 41 (0x00000029)
JPEG
Added in API level 8int JPEG
Compressed JPEG format.
This format is always supported as an output format for the
android.hardware.camera2API,
and as a picture format for the older
CameraAPI
Constant Value: 256 (0x00000100)
NV16
Added in API level 8int NV16
YCbCr format, used for video.
For the
android.hardware.camera2API,
the
YUV_420_888format is recommended for YUV output instead.
Whether this format is supported by the old camera API can be determined by
getSupportedPreviewFormats().
Constant Value: 16 (0x00000010)
NV21
Added in API level 8int NV21
YCrCb format used for images, which uses the NV21 encoding format.
This is the default format for
Camerapreview
images, when not otherwise set with
setPreviewFormat(int).
For the
android.hardware.camera2API,
the
YUV_420_888format is recommended for YUV output instead.
Constant Value: 17 (0x00000011)
PRIVATE
Added in API level 23int PRIVATE
Android private opaque image format.
The choices of the actual format and pixel data layout are entirely up to the device-specific and framework internal implementations, and may vary depending on use cases even for the same device. The buffers of
this format can be produced by components like
ImageWriter,
and interpreted correctly by consumers like
CameraDevicebased
on the device/framework private information. However, these buffers are not directly accessible to the application.
When an
Imageof this
format is obtained from an
ImageReaderor
ImageWriter,
the
getPlanes()method will return an empty
Planearray.
If a buffer of this format is to be used as an OpenGL ES texture, the framework will assume that sampling the texture will always return an alpha value of 1.0 (i.e. the buffer contains only opaque pixel values).
Constant Value: 34 (0x00000022)
RAW10
Added in API level 21int RAW10
Android 10-bit raw format
This is a single-plane, 10-bit per pixel, densely packed (in each row), unprocessed format, usually representing raw Bayer-pattern images coming from an image sensor.
In an image buffer with this format, starting from the first pixel of each row, each 4 consecutive pixels are packed into 5 bytes (40 bits). Each one of the first 4 bytes contains the top 8 bits of each pixel, The
fifth byte contains the 2 least significant bits of the 4 pixels, the exact layout data for each 4 consecutive pixels is illustrated below (
Pi[j]stands for the jth bit of the ith pixel):
bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | |
---|---|---|---|---|---|---|---|---|
Byte 0: | P0[9] | P0[8] | P0[7] | P0[6] | P0[5] | P0[4] | P0[3] | P0[2] |
Byte 1: | P1[9] | P1[8] | P1[7] | P1[6] | P1[5] | P1[4] | P1[3] | P1[2] |
Byte 2: | P2[9] | P2[8] | P2[7] | P2[6] | P2[5] | P2[4] | P2[3] | P2[2] |
Byte 3: | P3[9] | P3[8] | P3[7] | P3[6] | P3[5] | P3[4] | P3[3] | P3[2] |
Byte 4: | P3[1] | P3[0] | P2[1] | P2[0] | P1[1] | P1[0] | P0[1] | P0[0] |
a width multiple of 4 pixels
an even height
size = row stride * height
where the row stride is in bytes, not pixels.
Since this is a densely packed format, the pixel stride is always 0. The application must use the pixel data layout defined in above table to access each row data. When row stride is equal to
width * (10 / 8), there will be no padding bytes at the end of each row, the entire image data is densely packed. When stride is larger than
width * (10 / 8), padding bytes will be present at the end of each row.
For example, the
Imageobject
can provide data in this format from a
CameraDevice(if
supported) through a
ImageReaderobject. The
Image#getPlanes()will
return a single plane containing the pixel data. The pixel stride is always 0 in
getPixelStride(),
and the
getRowStride()describes the vertical
neighboring pixel distance (in bytes) between adjacent rows.
See also:
Image
ImageReader
CameraDevice
Constant Value: 37 (0x00000025)
RAW12
Added in API level 23int RAW12
Android 12-bit raw format
This is a single-plane, 12-bit per pixel, densely packed (in each row), unprocessed format, usually representing raw Bayer-pattern images coming from an image sensor.
In an image buffer with this format, starting from the first pixel of each row, each two consecutive pixels are packed into 3 bytes (24 bits). The first and second byte contains the top 8 bits of first and second
pixel. The third byte contains the 4 least significant bits of the two pixels, the exact layout data for each two consecutive pixels is illustrated below (Pi[j] stands for the jth bit of the ith pixel):
bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | |
---|---|---|---|---|---|---|---|---|
Byte 0: | P0[11] | P0[10] | P0[ 9] | P0[ 8] | P0[ 7] | P0[ 6] | P0[ 5] | P0[ 4] |
Byte 1: | P1[11] | P1[10] | P1[ 9] | P1[ 8] | P1[ 7] | P1[ 6] | P1[ 5] | P1[ 4] |
Byte 2: | P1[ 3] | P1[ 2] | P1[ 1] | P1[ 0] | P0[ 3] | P0[ 2] | P0[ 1] | P0[ 0] |
a width multiple of 4 pixels
an even height
size = row stride * height
where the row stride is in bytes, not pixels.
Since this is a densely packed format, the pixel stride is always 0. The application must use the pixel data layout defined in above table to access each row data. When row stride is equal to
width * (12 / 8), there will be no padding bytes at the end of each row, the entire image data is densely packed. When stride is larger than
width * (12 / 8), padding bytes will be present at the end of each row.
For example, the
Imageobject
can provide data in this format from a
CameraDevice(if
supported) through a
ImageReaderobject. The
Image#getPlanes()will
return a single plane containing the pixel data. The pixel stride is always 0 in
getPixelStride(),
and the
getRowStride()describes the vertical
neighboring pixel distance (in bytes) between adjacent rows.
See also:
Image
ImageReader
CameraDevice
Constant Value: 38 (0x00000026)
RAW_PRIVATE
Added in API level 24int RAW_PRIVATE
Private raw camera sensor image format, a single channel image with implementation depedent pixel layout.
RAW_PRIVATE is a format for unprocessed raw image buffers coming from an image sensor. The actual structure of buffers of this format is implementation-dependent.
Constant Value: 36 (0x00000024)
RAW_SENSOR
Added in API level 21int RAW_SENSOR
General raw camera sensor image format, usually representing a single-channel Bayer-mosaic image. Each pixel color sample is stored with 16 bits of precision.
The layout of the color mosaic, the maximum and minimum encoding values of the raw pixel data, the color space of the image, and all other needed information to interpret a raw sensor image must be queried from
the
CameraDevicewhich produced the image.
Constant Value: 32 (0x00000020)
RGB_565
Added in API level 8int RGB_565
RGB format used for pictures encoded as RGB_565. See
setPictureFormat(int).
Constant Value: 4 (0x00000004)
UNKNOWN
Added in API level 8int UNKNOWN
Constant Value: 0 (0x00000000)
YUV_420_888
Added in API level 19int YUV_420_888
Multi-plane Android YUV 420 format
This format is a generic YCbCr format, capable of describing any 4:2:0 chroma-subsampled planar or semiplanar buffer (but not fully interleaved), with 8 bits per color sample.
Images in this format are always represented by three separate buffers of data, one for each color plane. Additional information always accompanies the buffers, describing the row stride and the pixel stride for
each plane.
The order of planes in the array returned by
Image#getPlanes()is
guaranteed such that plane #0 is always Y, plane #1 is always U (Cb), and plane #2 is always V (Cr).
The Y-plane is guaranteed not to be interleaved with the U/V planes (in particular, pixel stride is always 1 in
yPlane.getPixelStride()).
The U/V planes are guaranteed to have the same row stride and pixel stride (in particular,
uPlane.getRowStride()==
vPlane.getRowStride()and
uPlane.getPixelStride()==
vPlane.getPixelStride();
).
For example, the
Imageobject can provide data
in this format from a
CameraDevicethrough a
ImageReaderobject.
See also:
Image
ImageReader
CameraDevice
Constant Value: 35 (0x00000023)
YUV_422_888
Added in API level 23int YUV_422_888
Multi-plane Android YUV 422 format
This format is a generic YCbCr format, capable of describing any 4:2:2 chroma-subsampled (planar, semiplanar or interleaved) format, with 8 bits per color sample.
Images in this format are always represented by three separate buffers of data, one for each color plane. Additional information always accompanies the buffers, describing the row stride and the pixel stride for
each plane.
The order of planes in the array returned by
Image#getPlanes()is
guaranteed such that plane #0 is always Y, plane #1 is always U (Cb), and plane #2 is always V (Cr).
In contrast to the
YUV_420_888format,
the Y-plane may have a pixel stride greater than 1 in
yPlane.getPixelStride().
The U/V planes are guaranteed to have the same row stride and pixel stride (in particular,
uPlane.getRowStride()==
vPlane.getRowStride()and
uPlane.getPixelStride()==
vPlane.getPixelStride();
).
For example, the
Imageobject
can provide data in this format from a
MediaCodecthrough
getOutputImage(int)object.
See also:
Image
MediaCodec
Constant Value: 39 (0x00000027)
YUV_444_888
Added in API level 23int YUV_444_888
Multi-plane Android YUV 444 format
This format is a generic YCbCr format, capable of describing any 4:4:4 (planar, semiplanar or interleaved) format, with 8 bits per color sample.
Images in this format are always represented by three separate buffers of data, one for each color plane. Additional information always accompanies the buffers, describing the row stride and the pixel stride for
each plane.
The order of planes in the array returned by
Image#getPlanes()is
guaranteed such that plane #0 is always Y, plane #1 is always U (Cb), and plane #2 is always V (Cr).
In contrast to the
YUV_420_888format,
the Y-plane may have a pixel stride greater than 1 in
yPlane.getPixelStride().
The U/V planes are guaranteed to have the same row stride and pixel stride (in particular,
uPlane.getRowStride()==
vPlane.getRowStride()and
uPlane.getPixelStride()==
vPlane.getPixelStride();
).
For example, the
Imageobject
can provide data in this format from a
MediaCodecthrough
getOutputImage(int)object.
See also:
Image
MediaCodec
Constant Value: 40 (0x00000028)
YUY2
Added in API level 8int YUY2
YCbCr format used for images, which uses YUYV (YUY2) encoding format.
For the
android.hardware.camera2API,
the
YUV_420_888format is recommended for YUV output instead.
This is an alternative format for
Camerapreview
images. Whether this format is supported by the camera hardware can be determined by
getSupportedPreviewFormats().
Constant Value: 20 (0x00000014)
YV12
Added in API level 9int YV12
Android YUV format.
This format is exposed to software decoders and applications.
YV12 is a 4:2:0 YCrCb planar format comprised of a WxH Y plane followed by (W/2) x (H/2) Cr and Cb planes.
This format assumes
an even width
an even height
a horizontal stride multiple of 16 pixels
a vertical stride equal to the height
y_size = stride * height c_stride = ALIGN(stride/2, 16) c_size = c_stride * height/2 size = y_size + c_size * 2 cr_offset = y_size cb_offset = y_size + c_size
For the
android.hardware.camera2API,
the
YUV_420_888format is recommended for YUV output instead.
For the older camera API, this format is guaranteed to be supported for
Camerapreview
images since API level 12; for earlier API versions, check
getSupportedPreviewFormats().
Note that for camera preview callback use (see
setPreviewCallback(Camera.PreviewCallback)),
the stride value is the smallest possible; that is, it is equal to:
stride = ALIGN(width, 16)
See also:
setPreviewCallback(Camera.PreviewCallback)
setPreviewFormat(int)
Constant Value: 842094169 (0x32315659)
Public constructors
ImageFormat
Added in API level 8ImageFormat ()
Public methods
getBitsPerPixel
Added in API level 8int getBitsPerPixel (int format)
Use this function to retrieve the number of bits per pixel of an ImageFormat.
Returns | |
---|---|
int | the number of bits per pixel of the given format or -1 if the format doesn't exist or is not supported. |
在这里主要就遇到初始化相机的时候有一个设置图片格式的问题,看了几篇文档 写法都不一样。。
mParams.setPictureFormat(PixelFormat.JPEG);
parameters.setPictureFormat(ImageFormat.JPEG);
这两个在里面参数得很清楚。This constant was deprecated in API level 8. use
ImageFormat.JPEGinstead.(这个常数在API级别8弃用。使用ImageFormat.JPEG代替。)
其他异同看里面的API吧 最新的 。。。。。
相关文章推荐
- Android Paint
- ViewGroup和View
- android 的数学公式图片转换
- Android 自定义密码键盘
- 安卓studio创建者修改
- android动态改变桌面图标
- Android开发中git命令使用
- Android开机广播android.intent.action.BOOT_COMPLETED
- Android初步笔记
- 实现android轮播图的开源组件--Android-ConvenientBanner
- winddows下搭建android studio
- 关于android.support.v4.view.NestedScrollingChild这个错误
- Android OpenCV 开发:对DetectionBasedTracker.java进行javah操作时提示找不到org.opencv.core.Mat的解决办法
- Android实战技巧:ViewStub的应用
- RelativeLayout 常用属性介绍
- AndroidStudio之删除项目
- Android 用Animation-list实现逐帧动画
- Android内存优化(使用SparseArray和ArrayMap代替HashMap)
- android音视频点/直播模块开发
- android 5 通知栏