您的位置:首页 > 移动开发 > Android开发

android PixelFormat与ImageFormat的对比

2016-06-24 17:17 489 查看


PixelFormat

public class PixelFormat 

extends Object 

java.lang.Object
   ↳android.graphics.PixelFormat


Summary


Constants

int
A_8


int
JPEG

This constant was deprecated in API level 8. use 
ImageFormat.JPEG
 instead.
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.NV21
 instead.
int
YCbCr_422_I

This constant was deprecated in API level 8. use 
ImageFormat.YUY2
 instead.
int
YCbCr_422_SP

This constant was deprecated in API level 8. use 
ImageFormat.NV16
 instead.


Fields

public int
bitsPerPixel


public int
bytesPerPixel



Public constructors

PixelFormat()


Public methods

static boolean
formatHasAlpha(int format)
static void
getPixelFormatInfo(int format, PixelFormat info)


Inherited methods



From
class 
java.lang.Object



Constants


A_8

Added in API level 1
int A_8


Constant Value: 8 (0x00000008)


JPEG

Added in API level 1
int JPEG


This constant was deprecated in API level 8.

use 
ImageFormat.JPEG
 instead.

Constant Value: 256 (0x00000100)


LA_88

Added in API level 1
int LA_88


Constant Value: 10 (0x0000000a)


L_8

Added in API level 1
int L_8


Constant Value: 9 (0x00000009)


OPAQUE

Added in API level 1
int OPAQUE

System chooses an opaque format (no alpha bits required)
Constant Value: -1 (0xffffffff)


RGBA_4444

Added in API level 1
int RGBA_4444


Constant Value: 7 (0x00000007)


RGBA_5551

Added in API level 1
int RGBA_5551


Constant Value: 6 (0x00000006)


RGBA_8888

Added in API level 1
int RGBA_8888


Constant Value: 1 (0x00000001)


RGBX_8888

Added in API level 1
int RGBX_8888


Constant Value: 2 (0x00000002)


RGB_332

Added in API level 1
int RGB_332


Constant Value: 11 (0x0000000b)


RGB_565

Added in API level 1
int RGB_565


Constant Value: 4 (0x00000004)


RGB_888

Added in API level 1
int RGB_888


Constant Value: 3 (0x00000003)


TRANSLUCENT

Added in API level 1
int TRANSLUCENT

System chooses a format that supports translucency (many alpha bits)
Constant Value: -3 (0xfffffffd)


TRANSPARENT

Added in API level 1
int TRANSPARENT

System chooses a format that supports transparency (at least 1 alpha bit)
Constant Value: -2 (0xfffffffe)


UNKNOWN

Added in API level 1
int UNKNOWN


Constant Value: 0 (0x00000000)


YCbCr_420_SP

Added in API level 1
int YCbCr_420_SP


This constant was deprecated in API level 8.

use 
ImageFormat.NV21
 instead.

Constant Value: 17 (0x00000011)


YCbCr_422_I

Added in API level 5
int YCbCr_422_I


This constant was deprecated in API level 8.

use 
ImageFormat.YUY2
 instead.

Constant Value: 20 (0x00000014)


YCbCr_422_SP

Added in API level 1
int YCbCr_422_SP


This constant was deprecated in API level 8.

use 
ImageFormat.NV16
 instead.

Constant Value: 16 (0x00000010)


Fields


bitsPerPixel

Added in API level 1
int bitsPerPixel



bytesPerPixel

Added in API level 1
int bytesPerPixel



Public constructors


PixelFormat

Added in API level 1
PixelFormat ()



Public methods


formatHasAlpha

Added in API level 1
boolean formatHasAlpha (int format)


Parameters
format
int
Returns
boolean
 


getPixelFormatInfo

Added in API level 1
void getPixelFormatInfo (int format,
PixelFormat info)


Parameters
format
int
info
PixelFormat


ImageFormat

public class ImageFormat 

extends Object 

java.lang.Object
   ↳android.graphics.ImageFormat


Summary


Constants

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.


Public constructors

ImageFormat()


Public methods

static int
getBitsPerPixel(int format)

Use this function to retrieve the number of bits per pixel of an ImageFormat.


Inherited methods



From
class 
java.lang.Object



Constants


DEPTH16

Added in API level 23
int 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 23
int 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 23
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.
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 
Image
 object
can provide data in this format from a 
MediaCodec
 through 
getOutputImage(int)
 object.

See also:
Image

MediaCodec


Constant Value: 42 (0x0000002a)


FLEX_RGB_888

Added in API level 23
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.
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 
Image
 object
can provide data in this format from a 
MediaCodec
 through 
getOutputImage(int)
 object.

See also:
Image

MediaCodec


Constant Value: 41 (0x00000029)


JPEG

Added in API level 8
int JPEG

Compressed JPEG format.
This format is always supported as an output format for the 
android.hardware.camera2
 API,
and as a picture format for the older 
Camera
 API

Constant Value: 256 (0x00000100)


NV16

Added in API level 8
int NV16

YCbCr format, used for video.
For the 
android.hardware.camera2
 API,
the 
YUV_420_888
 format 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 8
int NV21

YCrCb format used for images, which uses the NV21 encoding format.
This is the default format for 
Camera
 preview
images, when not otherwise set with 
setPreviewFormat(int)
.
For the 
android.hardware.camera2
 API,
the 
YUV_420_888
 format is recommended for YUV output instead.

Constant Value: 17 (0x00000011)


PRIVATE

Added in API level 23
int 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 
CameraDevice
 based
on the device/framework private information. However, these buffers are not directly accessible to the application.
When an 
Image
 of this
format is obtained from an 
ImageReader
 or 
ImageWriter
,
the 
getPlanes()
 method will return an empty 
Plane
 array.
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 21
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.
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 7bit 6bit 5bit 4bit 3bit 2bit 1bit 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]
This format assumes
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 
Image
 object
can provide data in this format from a 
CameraDevice
 (if
supported) through a 
ImageReader
 object. 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 23
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.
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 7bit 6bit 5bit 4bit 3bit 2bit 1bit 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]
This format assumes
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 
Image
 object
can provide data in this format from a 
CameraDevice
 (if
supported) through a 
ImageReader
 object. 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 24
int 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 21
int 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 
CameraDevice
 which produced the image.

Constant Value: 32 (0x00000020)


RGB_565

Added in API level 8
int RGB_565

RGB format used for pictures encoded as RGB_565. See 
setPictureFormat(int)
.
Constant Value: 4 (0x00000004)


UNKNOWN

Added in API level 8
int UNKNOWN


Constant Value: 0 (0x00000000)


YUV_420_888

Added in API level 19
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.
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 
Image
 object can provide data
in this format from a 
CameraDevice
 through a 
ImageReader
 object.

See also:
Image

ImageReader

CameraDevice


Constant Value: 35 (0x00000023)


YUV_422_888

Added in API level 23
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.
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_888
 format,
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 
Image
 object
can provide data in this format from a 
MediaCodec
 through 
getOutputImage(int)
 object.

See also:
Image

MediaCodec


Constant Value: 39 (0x00000027)


YUV_444_888

Added in API level 23
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.
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_888
 format,
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 
Image
 object
can provide data in this format from a 
MediaCodec
 through 
getOutputImage(int)
 object.

See also:
Image

MediaCodec


Constant Value: 40 (0x00000028)


YUY2

Added in API level 8
int YUY2

YCbCr format used for images, which uses YUYV (YUY2) encoding format.
For the 
android.hardware.camera2
 API,
the 
YUV_420_888
 format is recommended for YUV output instead.
This is an alternative format for 
Camera
 preview
images. Whether this format is supported by the camera hardware can be determined by
getSupportedPreviewFormats()
.

Constant Value: 20 (0x00000014)


YV12

Added in API level 9
int 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.camera2
 API,
the 
YUV_420_888
 format is recommended for YUV output instead.
For the older camera API, this format is guaranteed to be supported for 
Camera
 preview
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 8
ImageFormat ()



Public methods


getBitsPerPixel

Added in API level 8
int 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.JPEG
 instead.(这个常数在API级别8弃用。使用ImageFormat.JPEG代替。)

其他异同看里面的API吧  最新的 。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: