語言

ImageReader.NewInstance 方法

定義

多載

名稱 Description
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 影像,必須先釋出其中一張,才能透過或 #acquireNextImage()提供新的影像#acquireLatestImage()存取。 必須大於 0。

傳回

屬性

備註

建立一個新的閱讀器,以呈現所需大小和格式的圖片。

參數maxImages決定同時可從中ImageReader取得的最大物件數量Image。 請求更多緩衝區會消耗更多記憶體,因此重要的是只使用該用例所需的最低數量。

有效的尺寸與格式取決於影像資料的來源。

如果 formatImageFormat#PRIVATE PRIVATE,所建立 ImageReader 的影像將無法直接被應用程式存取。 應用程式仍可從中ImageReader擷取影像,並透過ImageWriter介面傳送至重新android.hardware.camera2.CameraDevice camera處理。 不過,格式 Image#getPlanes() getPlanes() 化影像時會回傳一個空陣列 ImageFormat#PRIVATE PRIVATE 。 應用程式可透過呼叫 #getImageFormat()來檢查現有讀取器的格式。

ImageFormat#PRIVATE PRIVATE ImageReader ImageReaders當應用程式不需要存取影像資料時,格式比使用其他格式(如 ImageFormat#YUV_420_888 YUV_420_888)的影像閱讀器更有效率。

Java 文件 android.media.ImageReader.newInstance(int, int, int, int)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

另請參閱

適用於

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 影像,必須先釋出其中一張,才能透過或 #acquireNextImage()提供新的影像#acquireLatestImage()存取。 必須大於 0。

usage
Int64

本 ImageReader 所產生影像的預期用途。 請參閱 on 的 HardwareBuffer 使用情況列表,裡面有有效的使用位元清單。 另 HardwareBuffer#isSupported(int, int, int, int, long) 請參閱檢查組合是否支援。 如果不支援,這會觸發一個 IllegalArgumentException

傳回

屬性

備註

建立一個新的讀取器,以顯示所需尺寸、格式及消費者使用標誌的圖片。

參數maxImages決定同時可從中ImageReader取得的最大物件數量Image。 請求更多緩衝區會消耗更多記憶體,因此重要的是只使用該用例所需的最低數量。

有效的尺寸與格式取決於影像資料的來源。

格式與使用標誌的組合描述了緩衝區將如何被消費者端點使用。 例如,若應用程式打算將影像傳送至 android.media.MediaCodec 硬體視訊編碼, android.media.MediaRecorder 格式與使用標誌的組合需要為 ImageFormat#PRIVATE PRIVATEHardwareBuffer#USAGE_VIDEO_ENCODE。 當ImageReader物件以有效大小及格式/使用標誌組合建立時,應用程式可以將 傳送Image imagesImageWriter 一個由 或 提供的android.media.MediaCodecandroid.media.MediaRecorder輸入android.view.Surface所建立的物件。

如果 formatImageFormat#PRIVATE PRIVATE,所建立 ImageReader 的影像將無法直接被應用程式存取。 應用程式仍可從此ImageReader擷取影像,並傳送至android.hardware.camera2.CameraDevice camera重處理,或透過ImageWriter介面傳送硬體android.media.MediaCodec / android.media.MediaRecorder影像編碼。 不過,格式 Image#getPlanes() getPlanes() 化影像時會回傳一個空陣列 ImageFormat#PRIVATE PRIVATE 。 應用程式可透過呼叫 #getImageFormat()來檢查現有讀取器的格式。

ImageFormat#PRIVATE PRIVATE ImageReader ImageReaders當應用程式不需要存取影像資料時,格式比使用其他格式(如 ImageFormat#YUV_420_888 YUV_420_888)的影像閱讀器更有效率。

請注意,並非所有格式與使用標誌的組合都被 支援 ImageReader。 以下是(假設消費者端點支援此類影像消費,例如硬體視訊編碼)所 ImageReader 支援的組合。 <表格><tr<>th>格式</th<>相容>使用標誌</th<>/tr><tr td>><非android.graphics.ImageFormat#PRIVATE PRIVATE格式,定義者為<android.graphics.PixelFormat PixelFormatandroid.graphics.ImageFormat ImageFormat /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,或 combined</td<>/tr<>/table>。使用其他組合可能導致 。IllegalArgumentException 此外,指定 HardwareBuffer#USAGE_CPU_WRITE_RARELYHardwareBuffer#USAGE_CPU_WRITE_OFTEN 寫入 ImageReader 緩衝區可能會違反部分製作者的假設,使用時應謹慎。

ImageReader 被用作輸出目標android.hardware.camera2.CameraDevice,且使用標誌包含 HardwareBuffer#USAGE_VIDEO_ENCODE,所產生ImageReader的時間戳Image images記不會與 android.os.SystemClock#elapsedRealtimeNanos相同時間基,即使 android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME。 相反地,時間戳記會大致位於與 中 android.os.SystemClock#uptimeMillis相同的時間基底,因此影音同步在錄影中可行。 在這種情況下,with HardwareBuffer#USAGE_VIDEO_ENCODE usage 標誌的時間ImageReader戳記可能無法直接與其他串流的時間戳記或擷取結果元資料比較。

Java 文件 android.media.ImageReader.newInstance(int, int, int, int, long)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於