From 6587d0c0892bb7d4f809acdd9f64176812b2d33c Mon Sep 17 00:00:00 2001 From: Junrou Nishida Date: Mon, 17 Feb 2025 22:25:49 +0900 Subject: [PATCH] feat: create Image/ImageFrame from Texture2D --- .../Runtime/Scripts/Framework/Formats/Image.cs | 3 ++- .../Runtime/Scripts/Framework/Formats/ImageFrame.cs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/Image.cs b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/Image.cs index 81d2cd031..8b6757c9d 100644 --- a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/Image.cs +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/Image.cs @@ -44,11 +44,12 @@ public Image(ImageFormat.Types.Format format, int width, int height, int widthSt : this(format, width, height, widthStep, pixelData, _VoidDeleter) { } - // TODO: detect format from the texture public Image(ImageFormat.Types.Format format, Texture2D texture) : this(format, texture.width, texture.height, format.NumberOfChannels() * texture.width, texture.GetRawTextureData()) { } + public Image(Texture2D texture) : this(texture.format.ToImageFormat(), texture) { } + #if UNITY_EDITOR_LINUX || UNITY_STANDALONE_LINUX || UNITY_ANDROID public Image(uint target, uint name, int width, int height, GpuBufferFormat format, GlTextureBuffer.DeletionCallback callback, GlContext glContext) : base() { diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/ImageFrame.cs b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/ImageFrame.cs index 8df86dbea..260abeea9 100644 --- a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/ImageFrame.cs +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Framework/Formats/ImageFrame.cs @@ -66,11 +66,12 @@ public ImageFrame(ImageFormat.Types.Format format, int width, int height, int wi : this(format, width, height, widthStep, pixelData, _VoidDeleter) { } - // TODO: detect format from the texture public ImageFrame(ImageFormat.Types.Format format, Texture2D texture) : this(format, texture.width, texture.height, format.NumberOfChannels() * texture.width, texture.GetRawTextureData()) { } + public ImageFrame(Texture2D texture) : this(texture.format.ToImageFormat(), texture) { } + protected override void DeleteMpPtr() { UnsafeNativeMethods.mp_ImageFrame__delete(ptr);