使用 MVC 6 on Ubuntu 运行 ASP.NET 调整图像大小 5 on Mono
Resize images with MVC 6 on Ubuntu running ASP.NET 5 on Mono
如何在 ASP.NET 5、MVC 6、DNX451 中使用 MONO、运行 在 Ubuntu 中调整图像大小?
我无法解决这个问题,因为我使用的标准组件(例如 ImageProcessor 和 ImageResizer.NET 似乎无法正常工作。
我目前正在 DNX 4.5.1 (ASP.NET 5) 和 MVC 6 中开发一个网站,该网站将托管在 Ubuntu 服务器上。
最近我 运行 遇到了重新调整图像大小的问题,所以我不得不跳出框框思考。就我而言,没有必要在我的开发环境中调整图像大小,所以我专注于如何在我即将推出的生产环境中处理这个问题。
解决方案是使用 ImageMagick,这是一款非常适合 Linux 的小软件。
我是这样解决的:
if (_hostingEnvironment.IsProduction())
{
var command = "-c 'convert " + filePath + " -resize 960x960 -quality 70 " + filePath + "'";
Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "/bin/bash";
proc.StartInfo.Arguments = command;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.Start();
}
因此,这是通过将文件上传到某个文件夹(在我的例子中是一个临时文件夹),然后执行转换命令来实现的。我用项目中需要的转换参数覆盖同一个文件。如果你想要更大的图像或更好的质量,你可以使用更多的参数。
这是一个很好的解决方案,但正如我所说,我只专注于在 Ubuntu 上进行这项工作,这将是我的生产环境,因此它被封装在一个 if 子句中,检查是否不管我是否在生产,但在 Windows 环境中也可能有类似的方法,但我宁愿选择一些标准组件来实现它。
查看这个跨平台库:https://github.com/JimBobSquarePants/ImageSharp
用法示例:
using (FileStream stream = File.OpenRead("foo.jpg"))
using (FileStream output = File.OpenWrite("bar.jpg"))
{
Image image = new Image(stream);
image.Resize(image.Width / 2, image.Height / 2)
.Greyscale()
.Save(output);
}
如何在 ASP.NET 5、MVC 6、DNX451 中使用 MONO、运行 在 Ubuntu 中调整图像大小?
我无法解决这个问题,因为我使用的标准组件(例如 ImageProcessor 和 ImageResizer.NET 似乎无法正常工作。
我目前正在 DNX 4.5.1 (ASP.NET 5) 和 MVC 6 中开发一个网站,该网站将托管在 Ubuntu 服务器上。
最近我 运行 遇到了重新调整图像大小的问题,所以我不得不跳出框框思考。就我而言,没有必要在我的开发环境中调整图像大小,所以我专注于如何在我即将推出的生产环境中处理这个问题。
解决方案是使用 ImageMagick,这是一款非常适合 Linux 的小软件。
我是这样解决的:
if (_hostingEnvironment.IsProduction())
{
var command = "-c 'convert " + filePath + " -resize 960x960 -quality 70 " + filePath + "'";
Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "/bin/bash";
proc.StartInfo.Arguments = command;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.Start();
}
因此,这是通过将文件上传到某个文件夹(在我的例子中是一个临时文件夹),然后执行转换命令来实现的。我用项目中需要的转换参数覆盖同一个文件。如果你想要更大的图像或更好的质量,你可以使用更多的参数。
这是一个很好的解决方案,但正如我所说,我只专注于在 Ubuntu 上进行这项工作,这将是我的生产环境,因此它被封装在一个 if 子句中,检查是否不管我是否在生产,但在 Windows 环境中也可能有类似的方法,但我宁愿选择一些标准组件来实现它。
查看这个跨平台库:https://github.com/JimBobSquarePants/ImageSharp
用法示例:
using (FileStream stream = File.OpenRead("foo.jpg"))
using (FileStream output = File.OpenWrite("bar.jpg"))
{
Image image = new Image(stream);
image.Resize(image.Width / 2, image.Height / 2)
.Greyscale()
.Save(output);
}