标签: imagesharp

使用ImageSharp从byte []创建图像

我有一个byte[],我想使用ImageSharp库创建一个灰度图像.

这就是我目前正在做的事情:

byte[] arr = MnistReader.ReadTestData(); //this gives me byte[] with 784 pixel values

ImageSharp.Image image = new ImageSharp.Image(28, 28);

for (int i = 0; i < image.Height; i++)
{
    for (int j = 0; j < image.Width; j++)
    {
        int curPixel = j + i * image.Width;
        image.Pixels[curPixel].R = arr[curPixel];
        image.Pixels[curPixel].G = arr[curPixel];
        image.Pixels[curPixel].B = arr[curPixel];
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更优雅的方式来做到这一点?

c# .net-core imagesharp

2
推荐指数
1
解决办法
1447
查看次数

如何使用ImageSharp创建Gif .net Core2

有什么办法可以使用ImageSharp从.net core2中的某些jpeg创建gif?

我可以使用Magick.Net从某些jpeg创建gif,但在Linux上不起作用。

我想在Ubuntu 14。

编辑

我可以使用ImageSharp从Jpegs创建Gif。这是我的源代码:

        var ite = fsArray.GetEnumerator(); // fsArray is FileStream Array
        ite.MoveNext();
        using (var image1 = Image.Load(ite.Current.Name))
        {
            image1.Mutate(x => x.Resize(width, height));

            // loop
            while (ite.MoveNext())
            {
                using (var image2 = Image.Load(ite.Current.Name))
                {
                    image2.Mutate(x => x.Resize(width, height));
                    image2.Frames.First().MetaData.FrameDelay = interval;
                    image1.Frames.AddFrame(image2.Frames.First());
                }
            }
            msGif = new FileStream("result.gif", FileMode.CreateNew);
            var gifEnc = new SixLabors.ImageSharp.Formats.Gif.GifEncoder();
            image1.Save(msGif, gifEnc);
            msGif.Close();
        }
Run Code Online (Sandbox Code Playgroud)

.net c# imagesharp

2
推荐指数
1
解决办法
649
查看次数

在 C# 中使用 SixLabors.ImageSharp 裁剪和移动图片

我正在使用SixLabors.ImageSharp在 C# .NET Core 3.1 中以编程方式裁剪图像。您可以在下面找到一个有效的代码片段。

public static void ResizeImage(Image<Rgba32> input, Size dimensions)
{
    var options = new ResizeOptions
    {
      Size = dimensions,
      Mode = ResizeMode.Crop
    };

    input.Mutate(x => x.Resize(options));
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我想允许用户根据一对给定的坐标裁剪图像。这意味着,裁剪将从这些坐标开始,而不是从原点 (0, 0) 开始。使用这个工具可以做到这一点吗?

到目前为止,我只能从图像一角开始裁剪。我希望能够从任何位置开始裁剪。例如,对于以下图像:

约翰·多伊

用户想要通过在 x 和 y 轴上移动裁剪来裁剪图片的中心部分。最终结果将是:

在此输入图像描述

请注意,在给定的示例中,我已经切掉了图像的角点。用Imagesharp可以做到这一点吗?

c# image-processing .net-core imagesharp

2
推荐指数
1
解决办法
2887
查看次数

如何使用 ImageSharp 从磁盘加载图像并保存到流,同时保留 mimetype

我在磁盘上存储了一堆图像,图像的 mimetype 存储在数据库中。如果我想将图像保存到磁盘,我可以使用Image.Save(string)(或异步版本),而无需知道图像的 MimeType。

但是,如果我想保存到流(例如,Response.Body),那么我必须使用Image.Save(Stream, IImageEncoder).

如何获取我IImageEncoder需要保存到流中的信息(而不只是声明“我的所有图像 ar png/jpeg/bmp”并使用 eg JpegEncoder)?

c# asp.net-core imagesharp

2
推荐指数
1
解决办法
9276
查看次数

使用 ImageSharp 获取图像中特定像素的颜色数据?

以前发过,但是因为写错了所以被关了。我正在尝试获取图像中各个像素的颜色。我还尝试从外部源加载图像 - 在这种情况下,假设我尝试从尺寸为 400x400px 的“abcd.jpg”(或 png,这里并不重要)获取颜色。我想要获取的颜色是 200x200 像素的颜色。根据之前的答案,我尝试的是:

var ipath = @"abcd.jpg";
var color;
using (Image image = Image.Load(ipath))
            {
                color = image<TPixel>[200,200];
            }
Run Code Online (Sandbox Code Playgroud)

但这不起作用,每当我尝试使用 TPixel 或 Rgba32 时,它只会告诉我“变量图像不能与类型参数一起使用”和“无法找到类型或命名空间 TPixel”。请有人帮忙,老实说,我不在乎我得到的颜色是什么格式,我只需要以某种方式获取颜色数据。提前致谢。

c# imagesharp

2
推荐指数
1
解决办法
3917
查看次数

Imagesharp在F#中变异

我正在尝试使用ImageSharp来编辑F#中的图片.我正在努力让图像突变起作用

要在C#中进行图像变异,看起来你只需要使用mutate方法和lambda:

image.Mutate(x => x.Kodachrome())
Run Code Online (Sandbox Code Playgroud)

通常,要将C#lambdas更改为F#,我只会使用匿名函数,如下所示:

image.Mutate(fun x -> x.Kodachrome())
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下错误:

方法'Mutate'没有重载匹配.可用的重载如下所示(或在错误列表窗口中).

看起来Mutate方法需要一个ImageProcessor,但由于某些原因,在F#中,编译器无法确定匿名函数是一个ImageProcessor.如何在F#中使用图像变异?

f# imagesharp

1
推荐指数
1
解决办法
193
查看次数

ImageSharp.Web - 在 Asp.Net Core 3.1 中通过查询字符串调整图像大小

我正在尝试使用 ImageSharp.Web 通过查询字符串参数调整图像大小,例如:http://localhost:5001/content/photo/img.jpg?width=800&height=600

我创建了一个新的 MVC Asp.Net Core 3.1 项目,安装了软件包并按照文档进行操作

我尝试了所描述的最低配置和几种变体,但中间件似乎没有拦截图像请求。我总是得到原始图像并且不会触发错误。

我错过了什么吗?此功能的最低可能配置是多少?

谢了!

启动.cs:

        public void ConfigureServices(IServiceCollection services)
    {

        services.AddDependencyInjectionSetup();
        services.AddControllersWithViews();

        //https://docs.sixlabors.com/articles/imagesharp.web/gettingstarted.html
        services.AddImageSharp();

        services.AddImageSharpCore(
            options =>
            {
                options.MaxBrowserCacheDays = 7;
                options.MaxCacheDays = 365;
                options.CachedNameLength = 8;
                options.OnParseCommands = _ => { };
                options.OnBeforeSave = _ => { };
                options.OnProcessed = _ => { };
                options.OnPrepareResponse = _ => { };
            })
            .SetRequestParser<QueryCollectionRequestParser>()
            .SetMemoryAllocator(provider => ArrayPoolMemoryAllocator.CreateWithMinimalPooling())
            .Configure<PhysicalFileSystemCacheOptions>(options =>
            {
                options.CacheFolder = "imagesharp-cache";
            })
            .SetCache<PhysicalFileSystemCache>()
            .SetCacheHash<CacheHash>()
            .AddProvider<PhysicalFileSystemProvider>()
            .AddProcessor<ResizeWebProcessor>()
            .AddProcessor<FormatWebProcessor>();


    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core asp.net-core-middleware imagesharp

1
推荐指数
1
解决办法
2365
查看次数

MemoryStream 抛出类型为 InvalidOperationException 的异常

我希望你能帮助:)

在我的 MVC.net core 2.2 中,调试一个简单的时:

MemoryStream ms = new MemoryStream();
Run Code Online (Sandbox Code Playgroud)

初始化后,它给了我一个:

ReadTimeout: 'ms.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
WriteTimeout: 'ms.WriteTimeout' threw an exception of type 'System.InvalidOperationException'
Run Code Online (Sandbox Code Playgroud)

现在解决方案不会崩溃或任何事情。但是如果我在 Visual Studio 中检查“ms”,它就是这么说的。

我想要做的是通过 SixLabors.ImageSharp 做:

IFormFile file = viewModel.File.Image;

using (Image<Rgba32> image = Image.Load(file.OpenReadStream()))
using (var ms = new MemoryStream())
{
    image.Mutate(x => x.Resize(1000, 1000));
    SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder jpegEncoder = 
        new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder();
    jpegEncoder.Quality = 80;

    image.Save(ms, jpegEncoder);

    StorageCredentials storageCredentials = new StorageCredentials("Name", "KeyValue");

    // Create cloudstorage account by passing the storagecredentials
    CloudStorageAccount …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc memorystream imagesharp

0
推荐指数
1
解决办法
2374
查看次数

将图像文件从浏览器上传到 AWS Lambda .Net Core 应用程序会导致文件不可用 - 如何修复?

我正在从我的浏览器上传一张 jpg 图像,作为表单的一部分,到我位于 AWS Lambda 上的 .Net Core web api。它上传但在我尝试使用 ImageSharp 处理它时导致错误。我还注意到上传版本的文件大小几乎是原始文件大小的两倍。请注意,在从 Visual Studio 2019 预览版运行的 Windows 环境中本地上传时没有问题。这是从 Visual Studio 发布到 AWS Lambda 的版本出现问题。

更多信息:图像作为 IForm 中的 IFormFile 进入我的 .NET 控制器。

amazon-web-services .net-core aws-lambda imagesharp

-1
推荐指数
1
解决办法
874
查看次数