|
|
|
@ -150,5 +150,70 @@ namespace SixLabors.ImageSharp |
|
|
|
int height) |
|
|
|
where TPixel : unmanaged, IPixel<TPixel> |
|
|
|
=> WrapMemory(Configuration.Default, pixelMemoryOwner, width, height); |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Wraps an existing contiguous memory area of 'width' x 'height' pixels,
|
|
|
|
/// allowing to view/manipulate it as an ImageSharp <see cref="Image{TPixel}"/> instance.
|
|
|
|
/// </summary>
|
|
|
|
/// <typeparam name="TPixel">The pixel type</typeparam>
|
|
|
|
/// <param name="configuration">The <see cref="Configuration"/></param>
|
|
|
|
/// <param name="byteMemory">The byte memory representing the pixel data.</param>
|
|
|
|
/// <param name="width">The width of the memory image.</param>
|
|
|
|
/// <param name="height">The height of the memory image.</param>
|
|
|
|
/// <param name="metadata">The <see cref="ImageMetadata"/>.</param>
|
|
|
|
/// <exception cref="ArgumentNullException">The configuration is null.</exception>
|
|
|
|
/// <exception cref="ArgumentNullException">The metadata is null.</exception>
|
|
|
|
/// <returns>An <see cref="Image{TPixel}"/> instance</returns>
|
|
|
|
public static Image<TPixel> WrapMemory<TPixel>( |
|
|
|
Configuration configuration, |
|
|
|
Memory<byte> byteMemory, |
|
|
|
int width, |
|
|
|
int height, |
|
|
|
ImageMetadata metadata) |
|
|
|
where TPixel : unmanaged, IPixel<TPixel> |
|
|
|
{ |
|
|
|
Guard.NotNull(configuration, nameof(configuration)); |
|
|
|
Guard.NotNull(metadata, nameof(metadata)); |
|
|
|
|
|
|
|
var memoryManager = new ByteMemoryManager<TPixel>(byteMemory); |
|
|
|
var memorySource = MemoryGroup<TPixel>.Wrap(memoryManager.Memory); |
|
|
|
return new Image<TPixel>(configuration, memorySource, width, height, metadata); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Wraps an existing contiguous memory area of 'width' x 'height' pixels,
|
|
|
|
/// allowing to view/manipulate it as an ImageSharp <see cref="Image{TPixel}"/> instance.
|
|
|
|
/// </summary>
|
|
|
|
/// <typeparam name="TPixel">The pixel type</typeparam>
|
|
|
|
/// <param name="configuration">The <see cref="Configuration"/></param>
|
|
|
|
/// <param name="byteMemory">The byte memory representing the pixel data.</param>
|
|
|
|
/// <param name="width">The width of the memory image.</param>
|
|
|
|
/// <param name="height">The height of the memory image.</param>
|
|
|
|
/// <exception cref="ArgumentNullException">The configuration is null.</exception>
|
|
|
|
/// <returns>An <see cref="Image{TPixel}"/> instance.</returns>
|
|
|
|
public static Image<TPixel> WrapMemory<TPixel>( |
|
|
|
Configuration configuration, |
|
|
|
Memory<byte> byteMemory, |
|
|
|
int width, |
|
|
|
int height) |
|
|
|
where TPixel : unmanaged, IPixel<TPixel> |
|
|
|
=> WrapMemory<TPixel>(configuration, byteMemory, width, height, new ImageMetadata()); |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Wraps an existing contiguous memory area of 'width' x 'height' pixels,
|
|
|
|
/// allowing to view/manipulate it as an ImageSharp <see cref="Image{TPixel}"/> instance.
|
|
|
|
/// The memory is being observed, the caller remains responsible for managing it's lifecycle.
|
|
|
|
/// </summary>
|
|
|
|
/// <typeparam name="TPixel">The pixel type.</typeparam>
|
|
|
|
/// <param name="byteMemory">The byte memory representing the pixel data.</param>
|
|
|
|
/// <param name="width">The width of the memory image.</param>
|
|
|
|
/// <param name="height">The height of the memory image.</param>
|
|
|
|
/// <returns>An <see cref="Image{TPixel}"/> instance.</returns>
|
|
|
|
public static Image<TPixel> WrapMemory<TPixel>( |
|
|
|
Memory<byte> byteMemory, |
|
|
|
int width, |
|
|
|
int height) |
|
|
|
where TPixel : unmanaged, IPixel<TPixel> |
|
|
|
=> WrapMemory<TPixel>(Configuration.Default, byteMemory, width, height); |
|
|
|
} |
|
|
|
} |
|
|
|
|