Saltar a contenido

Superposición de imagen

Video Capture SDK .Net Video Edit SDK .Net Media Player SDK .Net Media Blocks SDK .Net

VideoCaptureCore MediaPlayerCore VideoEditCore

Introducción

Este ejemplo demuestra cómo superponer una imagen en un flujo de video.

Se soportan imágenes JPG, PNG, BMP y GIF.

Código de ejemplo

Superposición de imagen más simple con imagen agregada desde un archivo con posición personalizada:

 var effect = new VideoEffectImageLogo(true, "imageoverlay");
 effect.Filename = @"logo.png";
 effect.Left = 100;
 effect.Top = 100;

 VideoCapture1.Video_Effects_Add(effect);

Superposición de imagen transparente

El SDK soporta completamente la transparencia en imágenes PNG. Si desea establecer un nivel de transparencia personalizado, puede usar la propiedad TransparencyLevel con un rango (0..255).

var effect = new VideoEffectImageLogo(true, "imageoverlay");
effect.Filename = @"logo.jpg";

effect.TransparencyLevel = 50;

VideoCapture1.Video_Effects_Add(effect);

Superposición de GIF animado

Puede superponer una imagen GIF animada en un flujo de video. El SDK reproducirá la animación GIF en la superposición.

var effect = new VideoEffectImageLogo(true, "imageoverlay");
effect.Filename = @"animated.gif";

effect.Animated = true;
effect.AnimationEnabled = true;

VideoCapture1.Video_Effects_Add(effect);

Superposición de imagen desde System.Drawing.Bitmap

Puede superponer una imagen desde un objeto System.Drawing.Bitmap.

var effect = new VideoEffectImageLogo(true, "imageoverlay");
effect.MemoryBitmap = new Bitmap("logo.jpg");
VideoCapture1.Video_Effects_Add(effect);

Superposición de imagen desde array de bytes RGB/RGBA

Puede superponer una imagen desde datos RGB/RGBA.

// agregar logotipo de imagen
var effect = new VideoEffectImageLogo(true, "imageoverlay");

// cargar imagen desde archivo JPG
var bitmap = new Bitmap("logo.jpg");

// bloquear datos de bitmap y guardar en datos de bytes (IntPtr)
var bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
var pixels = Marshal.AllocCoTaskMem(bitmapData.Stride * bitmapData.Height);
NativeAPI.CopyMemory(pixels, bitmapData.Scan0, bitmapData.Stride * bitmapData.Height);
bitmap.UnlockBits(bitmapData);

// establecer datos al efecto
effect.Bitmap = pixels;

// establecer propiedades del bitmap
effect.BitmapWidth = bitmap.Width;
effect.BitmapHeight = bitmap.Height;
effect.BitmapDepth = 3; // RGB24

// liberar bitmap
bitmap.Dispose();

// agregar efecto
VideoCapture1.Video_Effects_Add(effect);

Visite nuestra página de GitHub para obtener más ejemplos de código.