ImageReader.NewInstance Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
NewInstance(Int32, Int32, ImageFormatType, Int32) |
Создайте новое средство чтения для изображений требуемого размера и формата. |
NewInstance(Int32, Int32, ImageFormatType, Int32, Int64) |
Создайте новое средство чтения для изображений требуемого размера, формата и флага использования потребителей. |
NewInstance(Int32, Int32, ImageFormatType, Int32)
Создайте новое средство чтения для изображений требуемого размера и формата.
[Android.Runtime.Register("newInstance", "(IIII)Landroid/media/ImageReader;", "")]
public static Android.Media.ImageReader NewInstance (int width, int height, Android.Graphics.ImageFormatType format, int maxImages);
[<Android.Runtime.Register("newInstance", "(IIII)Landroid/media/ImageReader;", "")>]
static member NewInstance : int * int * Android.Graphics.ImageFormatType * int -> Android.Media.ImageReader
Параметры
- width
- Int32
Ширина изображений, создаваемых этим средством чтения, по умолчанию в пикселях.
- height
- Int32
Высота по умолчанию в пикселях для изображений, создаваемых этим средством чтения.
- format
- ImageFormatType
Формат изображения, который будет создаваться этим средством чтения. Это должна быть одна из android.graphics.ImageFormat
констант или android.graphics.PixelFormat
. Обратите внимание, что поддерживаются не все форматы, например ImageFormat.NV21.
- maxImages
- Int32
Максимальное количество изображений, к которым пользователь может получить доступ одновременно. Это должно быть как можно меньше, чтобы ограничить использование памяти. После получения пользователем изображений maxImages один из них должен быть выпущен, прежде чем новый образ станет доступен для доступа через #acquireLatestImage()
или #acquireNextImage()
.
Должно быть больше 0.
Возвращаемое значение
- Атрибуты
Комментарии
Создайте новое средство чтения для изображений требуемого размера и формата.
Параметр maxImages
определяет максимальное количество Image
объектов, которые могут быть получены из ImageReader
одновременно. Запрос дополнительных буферов будет использовать больше памяти, поэтому важно использовать только минимальное количество, необходимое для варианта использования.
Допустимые размеры и форматы зависят от источника данных изображения.
format
Если имеет значение ImageFormat#PRIVATE PRIVATE
, созданный ImageReader
объект создаст образы, недоступные напрямую приложению. Приложение по-прежнему может получать изображения из этого ImageReader
и отправлять их в android.hardware.camera2.CameraDevice camera
для повторной обработки через ImageWriter
интерфейс . Однако Image#getPlanes() getPlanes()
возвращает пустой массив для ImageFormat#PRIVATE PRIVATE
изображений форматирования. Приложение может проверка, если существующий формат средства чтения, путем вызова #getImageFormat()
.
ImageFormat#PRIVATE PRIVATE
форматы ImageReader ImageReaders
более эффективны, если доступ приложения к данным изображения не требуется, по сравнению с ImageReaders, использующими другой формат, например ImageFormat#YUV_420_888 YUV_420_888
.
Документация по Java для android.media.ImageReader.newInstance(int, int, int, int)
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
См. также раздел
Применяется к
NewInstance(Int32, Int32, ImageFormatType, Int32, Int64)
Создайте новое средство чтения для изображений требуемого размера, формата и флага использования потребителей.
[Android.Runtime.Register("newInstance", "(IIIIJ)Landroid/media/ImageReader;", "", ApiSince=29)]
public static Android.Media.ImageReader NewInstance (int width, int height, Android.Graphics.ImageFormatType format, int maxImages, long usage);
[<Android.Runtime.Register("newInstance", "(IIIIJ)Landroid/media/ImageReader;", "", ApiSince=29)>]
static member NewInstance : int * int * Android.Graphics.ImageFormatType * int * int64 -> Android.Media.ImageReader
Параметры
- width
- Int32
Ширина изображений, создаваемых этим средством чтения, по умолчанию в пикселях.
- height
- Int32
Высота по умолчанию в пикселях для изображений, создаваемых этим средством чтения.
- format
- ImageFormatType
Формат изображения, который будет создаваться этим средством чтения. Это должна быть одна из android.graphics.ImageFormat
констант или android.graphics.PixelFormat
. Обратите внимание, что поддерживаются не все форматы, например ImageFormat.NV21.
- maxImages
- Int32
Максимальное количество изображений, к которым пользователь может получить доступ одновременно.
Это должно быть как можно меньше, чтобы ограничить использование памяти. После получения пользователем изображений maxImages один из них должен быть выпущен, прежде чем новый образ станет доступен для доступа через #acquireLatestImage()
или #acquireNextImage()
. Должно быть больше 0.
- usage
- Int64
Предполагаемое использование образов, созданных этим ImageReader. Список допустимых HardwareBuffer
битов использования см. в разделе Об использовании. См. также HardwareBuffer#isSupported(int, int, int, int, long)
сведения о том, поддерживается ли сочетание. Если это не поддерживается, это вызовет исключение IllegalArgumentException
.
Возвращаемое значение
- Атрибуты
Комментарии
Создайте новое средство чтения для изображений требуемого размера, формата и флага использования потребителей.
Параметр maxImages
определяет максимальное количество Image
объектов, которые могут быть получены из ImageReader
одновременно. Запрос дополнительных буферов будет использовать больше памяти, поэтому важно использовать только минимальное количество, необходимое для варианта использования.
Допустимые размеры и форматы зависят от источника данных изображения.
Сочетание флагов формата и использования описывает, как буфер будет использоваться конечными точками потребителя. Например, если приложение намерено отправлять изображения android.media.MediaCodec
в или android.media.MediaRecorder
для кодирования аппаратного видео, сочетание флагов формата и использования должно иметь значение ImageFormat#PRIVATE PRIVATE
и HardwareBuffer#USAGE_VIDEO_ENCODE
. ImageReader
При создании объекта с допустимым размером и таким сочетанием флагов формата и использования приложение может отправить Image images
ImageWriter
в объект , созданный с помощью входных данныхandroid.view.Surface
, предоставляемых android.media.MediaCodec
или android.media.MediaRecorder
.
format
Если имеет значение ImageFormat#PRIVATE PRIVATE
, созданный ImageReader
объект создаст образы, недоступные напрямую приложению. Приложение по-прежнему может получать изображения из этого ImageReader
объекта и отправлять их в android.hardware.camera2.CameraDevice camera
для повторной обработки или в для аппаратногоandroid.media.MediaRecorder
android.media.MediaCodec
/ кодирования видео через ImageWriter
интерфейс. Однако Image#getPlanes() getPlanes()
возвращает пустой массив для ImageFormat#PRIVATE PRIVATE
изображений форматирования. Приложение может проверка, если существующий формат средства чтения, путем вызова #getImageFormat()
.
ImageFormat#PRIVATE PRIVATE
форматы ImageReader ImageReaders
более эффективны, если доступ приложения к данным изображения не требуется, по сравнению с ImageReaders, использующими другой формат, например ImageFormat#YUV_420_888 YUV_420_888
.
Обратите внимание, что не все сочетания флагов формата и использования поддерживаются ImageReader
. Ниже приведены поддерживаемые сочетания ( ImageReader
при условии, что конечные точки потребителя поддерживают такое потребление изображений, например аппаратное кодирование видео). <table><tr><th>Format</th th><>Совместимые флаги< использования/th></tr tr<<>>td>не-android.graphics.ImageFormat#PRIVATE PRIVATE
форматы, определенные android.graphics.ImageFormat ImageFormat
или /android.graphics.PixelFormat PixelFormat
<td><tdHardwareBuffer#USAGE_CPU_READ_RARELY
> или<HardwareBuffer#USAGE_CPU_READ_OFTEN
/td></tr tr<><>td>android.graphics.ImageFormat#PRIVATE
</td><tdHardwareBuffer#USAGE_VIDEO_ENCODE
> или HardwareBuffer#USAGE_GPU_SAMPLED_IMAGE
, или комбинированные</td<>/tr<>/table> Использование других сочетаний может привести к .IllegalArgumentException
Кроме того, указание HardwareBuffer#USAGE_CPU_WRITE_RARELY
или HardwareBuffer#USAGE_CPU_WRITE_OFTEN
и запись в буферы ImageReader могут нарушить предположения, сделанные некоторыми производителями, и их следует использовать с осторожностью.
ImageReader
Если используется в качестве целевого объекта вывода для android.hardware.camera2.CameraDevice
, а флаг использования содержит HardwareBuffer#USAGE_VIDEO_ENCODE
, метки Image images
времени, созданные ImageReader
объектом , не будут находиться в той же базе времени, что android.os.SystemClock#elapsedRealtimeNanos
и , даже если android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
имеет значение android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
. Вместо этого метки времени будут находиться примерно в той же базе времени, что и в android.os.SystemClock#uptimeMillis
, чтобы синхронизация аудио/видео могла работать для записи видео. В этом случае метки времени из с флагом ImageReader
HardwareBuffer#USAGE_VIDEO_ENCODE
использования могут быть напрямую не сравнимы с метками времени других потоков или метаданными результатов записи.
Документация по Java для android.media.ImageReader.newInstance(int, int, int, int, long)
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.