public byte[] GetSnapshot(int width, int height, SnapshotFormat format) { if (DesktopFrameBuffer == null || DesktopFrameBuffer.Length <= 0 || IsDesktopImageBufferEmpty) { return(null); } var span = new ReadOnlySpan <byte>(DesktopFrameBuffer); using var ms = new MemoryStream(); using var image = SixLabors.ImageSharp.Image.LoadPixelData <Bgra32>(span, DesktopWidth, DesktopHeight); { image.Mutate(x => x .Resize(width, height)); switch (format) { case SnapshotFormat.Jpeg: image.SaveAsJpeg(ms); break; case SnapshotFormat.Png: default: image.SaveAsPng(ms); break; } } return(ms.ToArray()); }
public SnapshotContext(String path, SnapshotFormat format, int quality) { Path = path.Replace('/', '\\'); if (Path[Path.Length - 1] == '\\') Path = Path.Substring(0, Path.Length - 1); Format = format; Quality = quality; }
/// <summary> /// Take a snapshot. /// </summary> /// <param name="path"></param> /// <param name="format"></param> /// <param name="quality"></param> public void TakeSnapshot(string path, SnapshotFormat format, int quality = 100) { ThrowIfNotInitialize(); switch (VlcMediaPlayer.State) { case MediaState.NothingSpecial: case MediaState.Opening: case MediaState.Buffering: case MediaState.Stopped: case MediaState.Ended: case MediaState.Error: break; case MediaState.Playing: case MediaState.Paused: _snapshotContext = new SnapshotContext(path, format, quality); break; } }
/// <summary> /// Take a snapshot. /// </summary> /// <param name="path"></param> /// <param name="format"></param> /// <param name="quality"></param> public void TakeSnapshot(String path, SnapshotFormat format, int quality) { if (VlcMediaPlayer != null) { switch (VlcMediaPlayer.State) { case MediaState.NothingSpecial: case MediaState.Opening: case MediaState.Buffering: case MediaState.Stopped: case MediaState.Ended: case MediaState.Error: break; case MediaState.Playing: case MediaState.Paused: _snapshotContext = new SnapshotContext(path, format, quality); break; } } }
/// <summary> /// Take a snapshot. /// </summary> /// <param name="path"></param> /// <param name="format"></param> /// <param name="quality"></param> public void TakeSnapshot(string path, SnapshotFormat format, int quality) { if (VlcMediaPlayer == null) { throw new InvalidOperationException("VlcMediaPlayer doesn't have initialize."); } switch (VlcMediaPlayer.State) { case MediaState.NothingSpecial: case MediaState.Opening: case MediaState.Buffering: case MediaState.Stopped: case MediaState.Ended: case MediaState.Error: break; case MediaState.Playing: case MediaState.Paused: _snapshotContext = new SnapshotContext(path, format, quality); break; } }
public void TakeSnapshot(String path, SnapshotFormat format, int quality) { switch (VlcMediaPlayer.State) { case MediaState.NothingSpecial: case MediaState.Opening: case MediaState.Buffering: case MediaState.Stopped: case MediaState.Ended: case MediaState.Error: break; case MediaState.Playing: case MediaState.Paused: _snapshotContext = new SnapshotContext(path, format, quality); break; } }
public SnapshotContext(String path, SnapshotFormat format, int quality) { Path = path.FormatPath(); Format = format; Quality = quality; }