嘿,我有以下 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版。
使用的图像:
Maggie(第一张图片)自己看起来像这样:
我做错了什么?我使用的是 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:黑色
复制不透明层
dstover 层
xc:"graya(100%,0)"
+糊涂
更新 2