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 imagesImageWriter в объект , созданный с помощью входных данныхandroid.view.Surface, предоставляемых android.media.MediaCodec или android.media.MediaRecorder.

format Если имеет значение ImageFormat#PRIVATE PRIVATE, созданный ImageReader объект создаст образы, недоступные напрямую приложению. Приложение по-прежнему может получать изображения из этого ImageReaderобъекта и отправлять их в android.hardware.camera2.CameraDevice camera для повторной обработки или в для аппаратногоandroid.media.MediaRecorderandroid.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, чтобы синхронизация аудио/видео могла работать для записи видео. В этом случае метки времени из с флагом ImageReaderHardwareBuffer#USAGE_VIDEO_ENCODE использования могут быть напрямую не сравнимы с метками времени других потоков или метаданными результатов записи.

Документация по Java для android.media.ImageReader.newInstance(int, int, int, int, long).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Применяется к