ImageReader.NewInstance 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | 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。 請求更多緩衝區會消耗更多記憶體,因此重要的是只使用該用例所需的最低數量。
有效的尺寸與格式取決於影像資料的來源。
如果 format 是 ImageFormat#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 PRIVATE 和 HardwareBuffer#USAGE_VIDEO_ENCODE。 當ImageReader物件以有效大小及格式/使用標誌組合建立時,應用程式可以將 傳送Image images到 ImageWriter 一個由 或 提供的android.media.MediaCodecandroid.media.MediaRecorder輸入android.view.Surface所建立的物件。
如果 format 是 ImageFormat#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_RARELY 或 HardwareBuffer#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_SOURCE 為 android.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 所創建與分享的作品,並依授權條款所描述的使用進行修改。