public final class DngCreator
extends Object
implements AutoCloseable
java.lang.Object | |
↳ | android.hardware.camera2.DngCreator |
DngCreator
类提供将原始像素数据作为DNG文件写入的功能。
这个类设计为与被使用RAW_SENSOR
可从缓冲器CameraDevice
,或具有拜尔型的原始像素数据以其它方式由应用程序生成。 DNG元数据标签将从CaptureResult
对象生成或直接设置。
DNG文件格式是一种跨平台的文件格式,用于存储来自摄像头传感器的像素数据,并采用最少的预处理。 DNG文件允许在用户定义的色彩空间中定义像素数据,并且具有关联的元数据,可以在后期处理过程中将此像素数据转换为标准的CIE XYZ色彩空间。
有关DNG文件格式和相关元数据的更多信息,请参阅 Adobe DNG 1.4.0.0 specification 。
Constants |
|
---|---|
int |
MAX_THUMBNAIL_DIMENSION 缩略图的最大宽度或高度尺寸。 |
Public constructors |
|
---|---|
DngCreator(CameraCharacteristics characteristics, CaptureResult metadata) 创建一个新的DNG对象。 |
Public methods |
|
---|---|
void |
close() 关闭此资源,放弃任何底层资源。 |
DngCreator |
setDescription(String description) 将用户描述字符串设置为写入。 |
DngCreator |
setLocation(Location location) 设置图像位置元数据。 |
DngCreator |
setOrientation(int orientation) 将方向值设置为写入。 |
DngCreator |
setThumbnail(Image pixels) 设置缩略图图像。 |
DngCreator |
setThumbnail(Bitmap pixels) 设置缩略图图像。 |
void |
writeByteBuffer(OutputStream dngOutput, Size size, ByteBuffer pixels, long offset) 使用当前配置的元数据将 |
void |
writeImage(OutputStream dngOutput, Image pixels) 使用当前配置的元数据将像素数据写入DNG文件。 |
void |
writeInputStream(OutputStream dngOutput, Size size, InputStream pixels, long offset) 使用当前配置的元数据将 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.lang.AutoCloseable
|
int MAX_THUMBNAIL_DIMENSION
缩略图的最大宽度或高度尺寸。
常量值:256(0x00000100)
DngCreator (CameraCharacteristics characteristics, CaptureResult metadata)
创建一个新的DNG对象。
没有必要调用任何设置方法来编写格式良好的DNG文件。
DNG元数据标签将从 CaptureResult
对象中的相应参数生成。
对于质量最好的DNG文件,强烈建议在支持的情况下启用镜头阴影贴图输出。 见STATISTICS_LENS_SHADING_MAP_MODE
。
Parameters | |
---|---|
characteristics |
CameraCharacteristics : an object containing the static CameraCharacteristics . |
metadata |
CaptureResult : a metadata object to generate tags from. |
void close ()
关闭此资源,放弃任何底层资源。 此方法在由try
-with-resources语句管理的对象上自动调用。
虽然此接口方法被声明为抛出 异常
,但 强烈建议实现者声明 close
方法的具体实现,以抛出更多特定的异常,或者在关闭操作无法失败时抛出任何异常。
此界面的实施者也强烈建议不要使用close
方法抛出InterruptedException
。 此异常与线程的中断状态交互,如果InterruptedException
为suppressed,则可能会发生运行时错误行为。 更一般地说,如果它会导致异常被抑制, AutoCloseable.close
方法不应该抛出它。
请注意,与close
的方法Closeable
,这close
不需要方法为幂等。 换句话说, close
调用这个close
方法可能会有一些明显的副作用,这与Closeable.close
不同,如果多次调用它, Closeable.close
不会产生任何效果。 然而,我们强烈建议此接口的实施者,使他们close
方法幂等。
DngCreator setDescription (String description)
将用户描述字符串设置为写入。
这相当于设置TIFF“ImageDescription”标签 (0x010E)
。
Parameters | |
---|---|
description |
String : the user description string. |
Returns | |
---|---|
DngCreator |
this DngCreator(CameraCharacteristics, CaptureResult) object. |
DngCreator setLocation (Location location)
设置图像位置元数据。
给定位置的对象必须包含至少一个有效的时间,纬度,经度和(相当于由返回的值 getTime()
, getLatitude()
和 getLongitude()
方法)。
Parameters | |
---|---|
location |
Location : an Location object to set. |
Returns | |
---|---|
DngCreator |
this DngCreator(CameraCharacteristics, CaptureResult) object. |
Throws | |
---|---|
IllegalArgumentException |
if the given location object doesn't contain enough information to set location metadata. |
DngCreator setOrientation (int orientation)
将方向值设置为写入。
这将被写为TIFF“方向”标签(0x0112)
。 调用此选项将覆盖此标签的任何先前设置。
Parameters | |
---|---|
orientation |
int : the orientation value to set, one of:
|
Returns | |
---|---|
DngCreator |
this DngCreator(CameraCharacteristics, CaptureResult) object. |
DngCreator setThumbnail (Image pixels)
设置缩略图图像。
Pixel data is interpreted as a YUV_420_888
image. Thumbnail images with a dimension larger than MAX_THUMBNAIL_DIMENSION
will be rejected.
Parameters | |
---|---|
pixels |
Image : an Image object with the format YUV_420_888 . |
Returns | |
---|---|
DngCreator |
this DngCreator(CameraCharacteristics, CaptureResult) object. |
Throws | |
---|---|
IllegalArgumentException |
if the given thumbnail image has a dimension larger than MAX_THUMBNAIL_DIMENSION . |
DngCreator setThumbnail (Bitmap pixels)
设置缩略图图像。
像素数据将被转换为基准TIFF RGB图像,每个颜色通道8位。 Alpha通道将被丢弃。 尺寸大于MAX_THUMBNAIL_DIMENSION
缩略图图片将被拒绝。
Parameters | |
---|---|
pixels |
Bitmap : a Bitmap of pixel data. |
Returns | |
---|---|
DngCreator |
this DngCreator(CameraCharacteristics, CaptureResult) object. |
Throws | |
---|---|
IllegalArgumentException |
if the given thumbnail image has a dimension larger than MAX_THUMBNAIL_DIMENSION . |
void writeByteBuffer (OutputStream dngOutput, Size size, ByteBuffer pixels, long offset)
使用当前配置的元数据将 RAW_SENSOR
像素数据写入DNG文件。
原始像素数据必须具有每像素16位,并且输入必须至少包含offset + 2 * width * height)
个字节。 输入的宽度和高度取自DngCreator
元数据标记中设置的宽度和高度,并且通常等于SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
的宽度和高度。 在API级别23之前,这总是与SENSOR_INFO_ACTIVE_ARRAY_SIZE
相同。 输入中的像素布局由SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
设置的报告的彩色滤光片排列(CFA)确定。 如果元数据不足以编写格式良好的DNG文件,则会引发IllegalStateException
。
此 ByteBuffer
上设置的任何标记或限制都将被忽略,并将通过此方法清除。
Parameters | |
---|---|
dngOutput |
OutputStream : an OutputStream to write the DNG file to. |
size |
Size : the Size of the image to write, in pixels. |
pixels |
ByteBuffer : an ByteBuffer of pixel data to write. |
offset |
long : the offset of the raw image in bytes. This indicates how many bytes will be skipped in the input before any pixel data is read. |
Throws | |
---|---|
IOException |
if an error was encountered in the input or output stream. |
IllegalStateException |
if not enough metadata information has been set to write a well-formatted DNG file. |
void writeImage (OutputStream dngOutput, Image pixels)
使用当前配置的元数据将像素数据写入DNG文件。
要使此方法成功, Image
输入必须包含 RAW_SENSOR
像素数据,否则将抛出 IllegalArgumentException
。
Parameters | |
---|---|
dngOutput |
OutputStream : an OutputStream to write the DNG file to. |
pixels |
Image : an Image to write. |
Throws | |
---|---|
IOException |
if an error was encountered in the output stream. |
IllegalArgumentException |
if an image with an unsupported format was used. |
IllegalStateException |
if not enough metadata information has been set to write a well-formatted DNG file. |
void writeInputStream (OutputStream dngOutput, Size size, InputStream pixels, long offset)
使用当前配置的元数据将 RAW_SENSOR
像素数据写入DNG文件。
原始像素数据必须具有每像素16位,且输入必须至少包含offset + 2 * width * height)
个字节。 输入的宽度和高度取自DngCreator
元数据标记中设置的宽度和高度,并且通常等于SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
的宽度和高度。 在API级别23之前,这总是与SENSOR_INFO_ACTIVE_ARRAY_SIZE
相同。 输入中的像素布局由SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
设置的报告的彩色滤光片排列(CFA)确定。 如果元数据不足以编写格式良好的DNG文件,则会引发IllegalStateException
。
Parameters | |
---|---|
dngOutput |
OutputStream : an OutputStream to write the DNG file to. |
size |
Size : the Size of the image to write, in pixels. |
pixels |
InputStream : an InputStream of pixel data to write. |
offset |
long : the offset of the raw image in bytes. This indicates how many bytes will be skipped in the input before any pixel data is read. |
Throws | |
---|---|
IOException |
if an error was encountered in the input or output stream. |
IllegalStateException |
if not enough metadata information has been set to write a well-formatted DNG file. |
IllegalArgumentException |
if the size passed in does not match the |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类重写finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何行动,包括使这个对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类finalize
方法Object
执行特殊的操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对一个对象调用了 finalize
方法之后,在Java虚拟机再次确定没有任何方法可以通过尚未死亡的任何线程访问此对象之前,不会采取进一步的操作,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机从不会多次调用 finalize
方法。
finalize
方法抛出的任何异常 finalize
导致此对象的终止被暂停,但会被忽略。
Throws | |
---|---|
Throwable |