【发布时间】:2018-08-26 23:24:11
【问题描述】:
大家好,我有以下 C# 代码:
List<string> lFiles = new List<string>();
lFiles.Add(@"C:\Users\David\Pictures\1.jpg");
lFiles.Add(@"C:\Users\David\Pictures\2.jpg");
lFiles.Add(@"C:\Users\David\Pictures\3.jpg");
IFiles.Add(@"C:\Users\David\Pictures\4.jpg");
IFiles.Add(@"C:\Users\David\Pictures\5.jpg");
using (MagickImageCollection images = new MagickImageCollection())
{
MagickImage magickinput = null;
foreach (string tempFile in lFiles)
{
magickinput = new MagickImage(tempFile);
magickinput.Alpha(AlphaOption.Set);
magickinput.Quality = 100;
magickinput.Resize(0, 100);
magickinput.Distort(DistortMethod.DePolar, 0);
magickinput.VirtualPixelMethod = VirtualPixelMethod.HorizontalTile;
magickinput.BackgroundColor = MagickColors.None;
magickinput.Distort(DistortMethod.Polar, 0);
images.Add(magickinput);
}
var montageSettings = new MontageSettings()
{
BackgroundColor = MagickColors.None,
TileGeometry = new MagickGeometry(lFiles.Count, 1),
Shadow = true,
Geometry = new MagickGeometry(-10, 5, 0, 0)
};
using (IMagickImage result = images.Montage(montageSettings))
{
result.Composite(magickinput, CompositeOperator.DstIn);
result.Trim();
result.RePage();
result.Write(@"C:\Users\David\Pictures\combinedImgs.png");
}
}
这会产生这样的图像:
请注意,Maggie(第一张图片)周围的区域内有 Lisa(第二张图片),并剪掉了图片 2 的一部分???。它还切断了 Marge(最后一张图片)。如果我只是将 Geometry = new MagickGeometry(-10, 5, 0, 0) 设置为 Geometry = new MagickGeometry(5, 5, 0, 0) 它看起来像这个:
修复了 Marge(最后一张图片)但 Maggie(第一张图片)看起来仍然很奇怪...
我还注意到,所有图像的轮廓似乎都“模糊”:
第一张是原图,第二张是Magick版本。
使用的图片:
玛吉(第一张图片)自己看起来像这样:
我做错了什么?我使用的是 ImageMagick-7.0.7-Q16 版本。
这是我想要的整体外观:
更新
这是我翻译命令行所得到的:
List<string> lFiles = new List<string>();
lFiles.Add(@"C:\Users\David\Pictures\1.jpg");
lFiles.Add(@"C:\Users\David\Pictures\2.jpg");
lFiles.Add(@"C:\Users\David\Pictures\3.jpg");
lFiles.Add(@"C:\Users\David\Pictures\4.jpg");
lFiles.Add(@"C:\Users\David\Pictures\5.jpg");
using (MagickImageCollection images = new MagickImageCollection())
{
MagickImage magickinput = null;
foreach (string tempFile in lFiles)
{
magickinput = new MagickImage(tempFile);
IMagickImage _circle = new MagickImage();
magickinput.Resize(100, 100);
_circle = new MagickImage(MagickColor.FromRgb(255, 255, 255), magickinput.Width + 20, magickinput.Height);
_circle.Draw(new DrawableCircle(50, 50, 50, 100));
_circle.Alpha(AlphaOption.Off);
//_circle.Compose....????
}
}
我不确定如何在 C# 中执行以下命令:
xc:黑色
copy_opacity -layers
dstover 层
xc:"graya(100%,0)"
+smush
更新 2
【问题讨论】:
-
Imagemagick 的版本,请发布您的输入图像。与蒙太奇相比,-smush 是否也会发生同样的想法?
-
你也可以添加所需的输出吗?
-
更新了我的 OP 以显示我想要实现的目标。
-
更新了我的 OP 以显示我到目前为止的 C# 代码@dlemstra
标签: c# imagemagick imagemagick-convert magick.net