我有一个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)
我想知道是否有更优雅的方式来做到这一点?
有什么办法可以使用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) 我正在使用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可以做到这一点吗?
我在磁盘上存储了一堆图像,图像的 mimetype 存储在数据库中。如果我想将图像保存到磁盘,我可以使用Image.Save(string)(或异步版本),而无需知道图像的 MimeType。
但是,如果我想保存到流(例如,Response.Body),那么我必须使用Image.Save(Stream, IImageEncoder).
如何获取我IImageEncoder需要保存到流中的信息(而不只是声明“我的所有图像 ar png/jpeg/bmp”并使用 eg JpegEncoder)?
以前发过,但是因为写错了所以被关了。我正在尝试获取图像中各个像素的颜色。我还尝试从外部源加载图像 - 在这种情况下,假设我尝试从尺寸为 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”。请有人帮忙,老实说,我不在乎我得到的颜色是什么格式,我只需要以某种方式获取颜色数据。提前致谢。
我正在尝试使用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#中使用图像变异?
我正在尝试使用 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) 我希望你能帮助:)
在我的 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) 我正在从我的浏览器上传一张 jpg 图像,作为表单的一部分,到我位于 AWS Lambda 上的 .Net Core web api。它上传但在我尝试使用 ImageSharp 处理它时导致错误。我还注意到上传版本的文件大小几乎是原始文件大小的两倍。请注意,在从 Visual Studio 2019 预览版运行的 Windows 环境中本地上传时没有问题。这是从 Visual Studio 发布到 AWS Lambda 的版本出现问题。
更多信息:图像作为 IForm 中的 IFormFile 进入我的 .NET 控制器。
imagesharp ×9
c# ×7
.net-core ×3
asp.net-core ×2
.net ×1
asp.net-mvc ×1
aws-lambda ×1
f# ×1
memorystream ×1